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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для меня это работает так, как ожидалось:
alert("æøå");
... создает предупреждение, содержащее строку "& aelig; & oslash; & aring;" в то время как
alert("æøå");
... создает предупреждение с символами, отличными от ascii.
Javascript довольно чистый utf-8 и не создает препятствий на вашем пути.
Может быть, вы размещаете это на веб-сервере, который обслуживает его как ISO-8859-1? Если вы используете Apache, в вашем конфигурационном файле Apache (или в .httaccess, если вы можете переопределить) у вас должна быть строка
AddCharset utf-8 .js
(Примечание: отредактировано, чтобы избежать амперсандов ... иначе это не имело смысла.)
Я получаю "& aelig; & oslash; & aring;" для первого и несколько нежелательных символов для следующего. Может ли быть, что javascript не искажает (или моджибаке) ваши буквы, но в диалоговом окне предупреждения используется системный шрифт по умолчанию, а шрифт не может отображать буквы?
Недостаточно просто указать UTF-8 в заголовке. Готов поспорить, вы не сохранили свой файл как UTF-8. Любой достаточно продвинутый текстовый редактор будет иметь эту возможность. Попробуйте, и я уверен, что это сработает!
Вы также можете использовать String.fromCharCode() для вывода символа из числового объекта.
например String.fromCharCode( 8226 ) создаст символ маркера.
Если вы никогда не можете установить кодировку ответа, вы можете использовать escape-последовательность \u в строковом литерале JavaScript для отображения этих символов.
alert("\u00e6\u00f8\u00e5")
Я использую такой код с тайским языком. Все нормально.
$message - моя переменная PHP.
echo("<html><head><meta charset='utf-8'></head><body><script type='text/javascript'>alert('" . $message . "');</script></body></html>");
Надеюсь, это поможет. Спасибо.
(Я не могу опубликовать изображение того, что я сделал, поскольку система сказала: «У меня недостаточно репутации», поэтому я оставляю изображение здесь. http://goo.gl/9P3DtI Приносим извинения за неудобства.)
Извините за мой слабый английский.