Ответ 1
Просто указать UTF-8 в заголовке недостаточно. Готов поспорить, вы не сохранили свой файл как UTF-8. Любой разумно расширенный текстовый редактор будет иметь эту опцию. Попробуйте, и я уверен, что это сработает!
Я работаю над веб-приложением, где я переношу данные с сервера на браузер в 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. Любой разумно расширенный текстовый редактор будет иметь эту опцию. Попробуйте, и я уверен, что это сработает!
Если вы никогда не можете установить кодировку ответа, вы можете использовать escape-последовательность \u
в строковом литерале JavaScript, чтобы отобразить эти символы.
alert("\u00e6\u00f8\u00e5")
Вы также можете использовать String.fromCharCode()
для вывода символа из числового объекта.
например. String.fromCharCode( 8226 )
создаст символ пули.
Я получаю "& aelig; & oslash; & aring;" для первого и некоторых нежелательных символов для следующего. Может быть, что javascript не искажает (или mojibake) ваши письма, но в диалоговом окне оповещения используется шрифт по умолчанию для системы, а шрифт не может отображать буквы?
Я использую такой код с тайским языком. Это нормально.
$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 довольно уф-8 чист и не стремится помешать вам на пути.
Возможно, вы помещаете это на веб-сервер, который служит ему как ISO-8859-1? Если вы используете Apache, в вашем конфигурационном файле Apache (или в .httaccess, если вы можете переопределить), вы должны иметь строку
AddCharset utf-8 .js
(Примечание: отредактировано для выхода из амперсандов... в противном случае это не имеет смысла.)