Вопрос

Я работаю над веб-приложением, в котором передаю данные с сервера в браузер в формате 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 escape-последовательность в строковом литерале JavaScript для отображения этих символов.

alert("\u00e6\u00f8\u00e5")

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

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

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

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

$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.

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

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

AddCharset utf-8 .js

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top