Международные символы в Javascript

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
14
0
42 561
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

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

... создает предупреждение, содержащее строку "& 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 Приносим извинения за неудобства.)

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

Другие вопросы по теме