مشكلات تشفير HTML - تظهر حرف "Â" بدلاً من "& nbsp؛"


Answers

إذا كان لدى أي شخص نفس المشكلة مثلي وكانت المجموعة صحيحة بالفعل ، فقم بذلك ببساطة:

  1. انسخ كل الشفرة داخل ملف html.
  2. افتح notepad (أو أي محرر نص أساسي) ثم قم بلصق الكود.
  3. الذهاب "ملف -> حفظ باسم"
  4. أدخل اسم الملف "example.html" (حدد "حفظ بنوع: All Files ( . )")
  5. حدد تشفير كـ UTF-8
  6. انقر فوق حفظ ويمكنك الآن حذف ملف html القديم الخاص بك ويجب أن يتم إصلاح الترميز
Question

لقد حصلت على تطبيق قديم بدأ للتو في التصرف ، ولأي سبب لست متأكدًا. أنه يولد حفنة من HTML التي يتم تحويلها إلى تقارير PDF من قبل ActivePDF.

تعمل هذه العملية على النحو التالي:

  1. اسحب قالب HTML من قاعدة بيانات تحتوي على رموز مميزة يتم استبدالها (على سبيل المثال "~ CompanyName ~" ، "~ CustomerName ~" ، إلخ.)
  2. استبدل الرموز المميزة بالبيانات الحقيقية
  3. قم بتنظيم HTML مع دالة regex بسيطة تقوم الخاصية بتنسيق قيم سمة tag HTML (تضمن علامات الاقتباس ، وما إلى ذلك ، نظرًا لأن محرك العرض الخاص بـ ActivePDF يكره أي شيء باستثناء علامات الاقتباس المفردة حول قيم السمات)
  4. قم بإرسال HTML إلى خدمة ويب تنشئ PDF.

في مكان ما في هذه الفوضى ، يتم تشفير المسافات غير الانفصالية من قالب HTML (   s) كمعيار ISO-8859-1 بحيث تظهر بشكل غير صحيح كحرف "Â" عند عرض المستند في مستعرض (FireFox) . ActivePDF Pukes على هذه الأحرف غير UTF8.

سؤالي: بما أنني لا أعرف من أين نبعت المشكلة وليس لدينا وقت للتحقيق فيها ، فهل هناك طريقة سهلة لإعادة تشفير أو البحث عن واستبدال الشخصيات السيئة؟ لقد حاولت إرسالها من خلال هذه الوظيفة الصغيرة التي ألتقي بها ، لكنها تحول كل شيء إلى gobbledegook لا يغير أي شيء.

Private Shared Function ConvertToUTF8(ByVal html As String) As String
    Dim isoEncoding As Encoding = Encoding.GetEncoding("iso-8859-1")
    Dim source As Byte() = isoEncoding.GetBytes(html)
    Return Encoding.UTF8.GetString(Encoding.Convert(isoEncoding, Encoding.UTF8, source))
End Function

أيه أفكار؟

تصحيح:

أنا أتعامل مع هذا الآن ، رغم أنه لا يبدو كحل جيد:

Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
    Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function



كنت أواجه نفس نوع المشكلة. يبدو أنه ببساطة لأن PHP لا يتعرف على utf-8.

كنت أقوم بتمزيق شعري في البداية عندما تظهر علامة "£" تظهر على شكل "£" ، على الرغم من أنها تظهر بشكل جيد في DreamWeaver. في النهاية تذكرت أنني كنت أواجه مشاكل في الارتباطات المتعلقة بملف الفهرس ، عندما تعمل الصفحات ، إذا تمت مشاهدتها بشكل مباشر ، مع عرض الشرائح ، ولكن ليس عند استخدامها مع تضمينها (ولكن هذا بجانب هذه النقطة. على أي حال ، تساءلت إذا كان هذا قد يكون مشكلة مماثلة ، وذلك بدلا من وضع في الصفحة التي كنت تواجه مشاكل ، أنا ببساطة وضعها في ملف index.php - مشكلة ثابتة طوال الوقت.




في حالتي كنت أتلقى علامة الصليب اللاتينية بدلاً من nbsp ، حتى أن الصفحة تم ترميزها بشكل صحيح في UTF-8. لا شيء من أعلاه ساعد في حل المشكلة وحاولت كل شيء.

في النهاية ، ساعد الخط المتغير لـ IE (مع css خاص بالمتصفح) ، كنت أستخدم Helvetica-Nue كخط جسد يتحول إلى Arial حل المشكلة.