سؤال حول الترميزات: كيف يمكنني الإخراج من htmlagimespack إلى StringWriter والحفاظ على الترميز؟

StackOverflow https://stackoverflow.com/questions/1115718

سؤال

أنا أقرأ HTML مع HTMLAGIMECEPACK، وتحريره، ثم إخراجه إلى StreamWriter. ترميز HTMLAGIMEPACK هو Latin1، وكتابة التدقيق هو UnicdeEncoding.

أنا أفقد بعض الشخصيات في التحويل، وأنا لا أريد أن أكون.

لا يبدو لي أن أتمكن من تغيير ترميز كتاب Stream. ما هو الأفضل حول هذه المشكلة؟

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

المحلول

إذا كانت صفحة الويب Latin-1 (ISO-8859-1)، فلا يمكن أن يكون لها أي اقتباسات مجعد فيها؛ ليس لدى Latin-1 أي تعيينات لهذه الشخصيات. إذا كنت تستطيع رؤية علامات اقتباس مجعد عند فتح الصفحة في متصفحك، فقد تكون في شكل كيانات HTML (“ و ” أو “ و ”). لكنني أظن أن ترميز الصفحة هو حقا Windows-1252 على الرغم من ما يقوله الرؤوس والإعلانات المضمنة.

Windows-1252 مطابق ل Latin-1 إلا أنه يستبدل أحرف التحكم في \x80..\x9F المدى (عشري 128..159) مع أحرف الطباعة أكثر فائدة (أو على الأقل). إذا كان HTMLAGIENKPACK يأخذ الصفحة في كلمته وفنها ك ISO-8859-1، فسوف يتحول \x93 إلى حرف التحكم \u0093, ، والتي ستبدو مثل القمامة إذا كنت تستطيع الحصول عليها لعرضها على الإطلاق. المتصفح، وفي الوقت نفسه، سوف يحوله إلى \u201C, ، نقطة رمز Unicode لعلامة الاقتباس المزدوج الأيسر.

أنا لست على دراية HTMLAGIMATE ولا يمكنني العثور على أي مستندات لذلك، لكنني سأحاول إجباره على استخدام Windows-1252. على سبيل المثال، يمكنك إنشاء Streamreader Windows-1252 (أو "ansi") واستخدام HAP ذلك.

نصائح أخرى

في تخمين؛ اكتب إلى Stream (ليس أ string). إذا كنت تكتب إلى string (INC. StringWriter/StringBuilder, ، أنت تستخدم ضمنيا سلسلة UTF-16 .NET.

إذا كنت تريد فقط تعديل ذكرت الترميز (ولكن استخدام string)، ثم انظر إلى جون الجواب هنا.

ليس من الواضح الذي تنتهي أنت تفقد الشخصيات في. على أي حال، لا يوجد عدم تطابق ترميز مجرد مشكلة - لا تزال من المفترض أن تحصل على الأحرف الصحيحة. في حالة أن يكتب مدخي يونيكود من الأحرف المشوهة، فهذا يعني أنه قد تلقى القمامة على المدخلات في المقام الأول. والتي ربما تعني أن HTMLAGIMEKPACK حصلت على ترميز لخطأ صفحتك. إذا كان لديه خيار لإعداد الترميز يدويا، فقد ترغب في القيام بذلك.

قد يكون ذلك أيضا أن لديك صفحة HTML لديها إعلان ترميز خاطئ فيه. على سبيل المثال قد يكون ملف UTF-8 الذي يحتوي على <meta> العنصر الذي يعلن عنه باسم اللاتينية 1. أين تحصل على النص من؟ هل تقوم بتنزيله مباشرة من الويب، أو هل لديك في ملف نصي - وإذا كان هذا الأخير، فكيف يمكنك إنشاء هذا الملف؟ إذا فعلت ذلك يدويا عبر المفكرة، أو في التعليمات البرمجية عبر StreamWriter, ، قد يكون لديك ملف UTF-8.

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