سؤال

أنا أقرأ ملف XML من خدمة الويب الراحة، وقم بتحليله، وعرض التفاصيل في JitalView. يتم ترميز ملف XML باسم ISO-8859-1 ويحتوي على أحرف معلمة. إذا قمت فقط بإضافة السلسلة إلى TableView، فأنا أحصل على شخصية غير مرغوب فيها معروضة، لذلك حاولت تحويله إلى UTF8 ولكن يتم تحويله إلى علامة استفهام، مما يعني أنه لا يفهم الشخصية.

إليك الرمز:

foreach(XmlNode myNode in myNodeList)
{
    Encoding isoEnc = Encoding.GetEncoding ("iso-8859-1");

    string utfResult = Encoding.UTF8.GetString (isoEnc.GetBytes(myNode.InnerText));

    _myCollection.Add(utfResult);
}

أي أفكار ما يحدث هنا، وكيفية عرض الأحرف المعلمة؟

هل كانت مفيدة؟

المحلول

حسنا، المشكلة الآن حلها. يبدو أن خطأي كان يفترض أن StreamReader ستعامل مع ترميز ISO-8859-1 بشكل افتراضي. لقد غيرت منشئ StreamReader الخاص بي من:

StreamReader reader = new StreamReader (response.GetResponseStream ());

ل:

StreamReader reader = new StreamReader (response.GetResponseStream (), Encoding.GetEncoding("iso-8859-1"));

من خلال إخبار StreamReader بتوقع الترميز الصحيح، يقع كل شيء آخر فقط في مكانه.

نصائح أخرى

حسنا، "تحويل" الخاص بك إلى UTF-8 مشبوه للغاية. أنت تقول أساسا أنك تعرف أفضل من ملف XML - أنه على الرغم من ذلك المطالبات أن تكون ISO-8859-1، أنت حقا تعرف أنه تم ترميزه في UTF-8. هل لديك أي سبب للاعتقاد بذلك؟

إذا كنت تعرف ما تقصده الأحرف، أقترح عليك إضافة بعض التسجيل للإشارة إلى قيم Unicode لهذه الأحرف (كعضات صحيحة) ومقارنتها الرمز المخططات على Unicode.org. وبعد ثم سوف تعرف ما إذا كانت مشكلتك في عرض الشخصيات، أو قراءةها من الخلاصة في المقام الأول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top