международные символы в Javascript

Я работаю над веб-приложением, где я передаю данные с сервера в браузер в формате 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)


person Joda    schedule 13.09.2008    source источник


Ответы (6)


Просто указать UTF-8 в заголовке недостаточно. Могу поспорить, что вы не сохранили свой файл как UTF-8. Любой достаточно продвинутый текстовый редактор будет иметь эту опцию. Попробуйте, и я уверен, что это сработает!

person grapefrukt    schedule 13.09.2008

Если вы никогда не сможете установить кодировку ответа, вы можете использовать управляющую последовательность \u в строковом литерале JavaScript для отображения этих символов.

alert("\u00e6\u00f8\u00e5")
person Kevin Hakanson    schedule 28.09.2008

Вы также можете использовать String.fromCharCode() для вывода символа из числового объекта.

например String.fromCharCode( 8226 ) создаст символ маркера.

person enricopulatzo    schedule 15.09.2008

Я получаю "" для первого и несколько ненужных символов для следующего. Может ли быть так, что JavaScript не искажает (или mojibake) ваши письма, но в диалоговом окне предупреждения используется системный шрифт по умолчанию, и шрифт не может отображать буквы?

person Eugene Yokota    schedule 13.09.2008

Я использую такой код с тайским языком. Все в порядке.

$message — моя переменная PHP.

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

Надеюсь, это может помочь. Спасибо.

(Я не могу опубликовать изображение того, что я сделал, так как система сказала: «У меня недостаточно репутации», поэтому я оставляю изображение здесь. http://goo.gl/9P3DtI Приносим извинения за неудобства.)

Извините за мой слабый английский.

person Kayun Chantarasathaporn    schedule 25.07.2013

Это работает, как и ожидалось для меня:

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

... создает предупреждение, содержащее строку "", тогда как

alert("æøå");

... создает предупреждение с символами, отличными от ascii.

Javascript довольно чистый utf-8 и не создает препятствий на вашем пути.

Может быть, вы размещаете это на веб-сервере, который обслуживает его как ISO-8859-1? Если вы используете Apache, в вашем конфигурационном файле Apache (или в .httaccess, если вы можете переопределить) у вас должна быть строка

AddCharset utf-8 .js

(Примечание: отредактировано, чтобы избежать амперсандов... иначе это не имело смысла.)

person chryss    schedule 13.09.2008