международные символы в Javascript - PullRequest
10 голосов
/ 14 сентября 2008

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

Ответы [ 6 ]

21 голосов
/ 28 сентября 2008

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

alert("\u00e6\u00f8\u00e5")
10 голосов
/ 14 сентября 2008

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

7 голосов
/ 16 сентября 2008

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

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

1 голос
/ 26 июля 2013

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

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

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

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

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

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

1 голос
/ 14 сентября 2008

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

0 голосов
/ 14 сентября 2008

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

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

... создает предупреждение, содержащее строку "& aelig; & oslash; & aring;" в то время как

alert("æøå");

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

Javascript довольно чистый utf-8 и не склонен мешать вам.

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

AddCharset utf-8 .js

(Примечание: отредактировано для экранирования от амперсандов ... в противном случае это не имело смысла.)

...