международные символы в Javascript
-
09-06-2019 - |
Вопрос
Я работаю над веб-приложением, в котором передаю данные с сервера в браузер в формате 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("æøå");
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("æøå");
...создает предупреждение, содержащее строку «æøå», тогда как
alert("æøå");
...создает предупреждение с символами, отличными от ascii.
Javascript довольно чистый utf-8 и не создает препятствий на вашем пути.
Может быть, вы размещаете это на веб-сервере, который обслуживает его как ISO-8859-1?Если вы используете Apache, в вашем файле конфигурации Apache (или в .httaccess, если вы можете переопределить), у вас должна быть строка
AddCharset utf-8 .js
(Примечание:отредактировано, чтобы избежать амперсандов...иначе это не имело бы смысла.)