سؤال

أنا أعمل على تطبيق ويب، حيث أنقل البيانات من الخادم إلى المتصفح بتنسيق XML.

وبما أنني دنماركي، فقد واجهت مشاكل مع الشخصيات بسرعة æøå.

أعلم أنه في لغة HTML، أستخدم ملف "æøå" ل æøå.

ومع ذلك، بمجرد مرور الأحرف عبر JavaScript، أحصل على صناديق سوداء بها "?" فيها عند الاستخدام æøå, ، و "æøå" تتم طباعتها كما هي.

لقد تأكدت من ضبطه على utf-8، لكن هذا لا يساعد كثيرًا.

من الناحية المثالية، أريد أن تعمل مع أي أحرف خاصة (بشكل طبيعي).

المثال الذي لا يعمل مدرج أدناه:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
        <script type="text/javascript" charset="utf-8">
            alert("&aelig;&oslash;&aring;");
            alert("æøå");

        </script>
    </head>
    <body>
    </body>
</html>

ما الخطأ الذي افعله؟


حسنًا، بفضل إجابة Grapefrukts، تمكنت من العمل.

لقد كنت في حاجة إليها بالفعل للبيانات الواردة من خادم MySQL.نظرًا لأن حفظ الملفات بترميز UTF-8 لا يحل سوى مشكلة المحتوى الثابت، أعتقد أنني سأقوم بتضمين الحل للسلاسل من خادم MySQL، والتي تم سحبها باستخدام PHP:

utf8_encode($MyStringHere)

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

المحلول

مجرد تحديد UTF-8 في الرأس لا يكفي.أراهن أنك لم تقم بحفظ ملفك بتنسيق UTF-8.سيكون لدى أي محرر نصوص متقدم إلى حد معقول هذا الخيار.جرب ذلك وأنا متأكد من أنه سينجح!

نصائح أخرى

إذا لم تتمكن من ضبط ترميز الاستجابة، فيمكنك استخدامه \u تسلسل الهروب في سلسلة جافا سكريبت الحرفية لعرض هذه الأحرف.

alert("\u00e6\u00f8\u00e5")

تستطيع ايضا استخذام String.fromCharCode() لإخراج حرف من كيان رقمي.

على سبيل المثال String.fromCharCode( 8226 ) سيتم إنشاء حرف رصاصة.

أحصل على "æøå" للجزء الأول وبعض الشخصيات غير المرغوب فيها للجزء التالي.هل يمكن أن يكون جافا سكريبت غير مشوه (أو com.mojibake) رسائلك ولكن مربع حوار التنبيه يستخدم الخط الافتراضي للنظام، والخط غير قادر على عرض الحروف؟

أستخدم الكود مثل هذا مع اللغة التايلاندية.لا بأس.

$message هو متغير PHP الخاص بي.

echo("<html><head><meta charset='utf-8'></head><body><script type='text/javascript'>alert('" . $message . "');</script></body></html>");

نأمل أن يكون هذا يمكن أن يساعد.شكرًا لك.

(لا أستطيع نشر صورة لما فعلته لأن النظام قال "ليس لدي سمعة كافية"، لذلك أترك الصورة هنا. http://goo.gl/9P3DtI آسف على الإزعاج.)

آسف لغتي الإنجليزية ضعيفة.

هذا يعمل كما هو متوقع بالنسبة لي:

alert("&aelig;&oslash;&aring;");

...ينشئ تنبيهًا يحتوي على السلسلة "æøå" بينما

alert("æøå");

...ينشئ تنبيهًا بأحرف غير ascii.

جافا سكريبت نظيف للغاية مع UTF-8 ولا يميل إلى وضع عقبات في طريقك.

ربما تضع هذا على خادم ويب يخدمه كـ ISO-8859-1؟إذا كنت تستخدم Apache، في ملف تكوين Apache (أو في .httaccess، إذا كان بإمكانك التجاوز)، فيجب أن يكون لديك سطر

AddCharset utf-8 .js

(ملحوظة:تم التعديل هرباً من علامات العطف ...وإلا فإنه لا معنى له.)

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