Нет. typedef - ключевое слово C, которое создает псевдоним для типа. #define - это предпроцессорная инструкция, которая создает событие замены текста перед компиляцией. Когда компилятор попадает в код, исходного слова «#defined» больше не существует. #define в основном используется для макросов и глобальных констант.
Просто определение UTF-8 в заголовке недостаточно. Я держал пари, что Вы не сохранили свой файл как UTF-8. Любой довольно усовершенствованный текстовый редактор будет иметь эту опцию. Попробуйте это, и я уверен, что это будет работать!
Если Вы никогда не можете устанавливать кодирование ответа, можно использовать \u
escape-последовательность в строковом литерале JavaScript для отображения этих символов.
alert("\u00e6\u00f8\u00e5")
Можно также использовать String.fromCharCode()
для вывода символа от числового объекта.
, например, String.fromCharCode( 8226 )
создаст символ маркера.
Я добираюсь "& aelig; & oslash; & aring"; для первого и некоторых символов спама для следующего. Могло случиться так, что JavaScript не искажает (или mojibake), Ваши буквы, но аварийное диалоговое окно используют шрифт системного значения по умолчанию, и шрифт неспособен к отображению букв?
Это работает как ожидалось на меня:
alert("æøå");
... создает предупреждение, содержащее строку "& aelig; & oslash; & aring"; тогда как
alert("æøå");
... создает предупреждение с символами неASCII.
JavaScript является симпатичным чистым utf-8 и не имеет тенденцию создавать препятствия в Вашем пути.
, Возможно, Вы помещаете это на веб-сервер, который служит ему в качестве ISO-8859-1? При использовании Apache в файле конфигурации Apache (или в .httaccess, если можно переопределить), у Вас должна быть строка
AddCharset utf-8 .js
(Примечание: отредактированный для выхода из амперсандов... иначе это не имело смысла.)