У меня возникает проблема с кодированием и декодированием Javascript. У меня есть объект json, который содержит строку, закодированную в UTF-8, например 'R\xc3\xa9union'
. Чтобы убедиться, что файл Javascript правильно отображает строку, я добавляю атрибут charset к тегу скрипта. Объект json находится в countries.js
. Я включаю country.js как <script src="js/countries.js" charset="UTF-8"></script>
, но он по-прежнему отображается как Réunion вместо Réunion. Любое предложение?
Ошибка кодирования и декодирования JavaScript
comment
Вы также добавляете кодировку в HTML-документ?
- person Justinas   schedule 27.05.2014
comment
Да, добавляю: ‹meta http-equiv=Content-Type content=text/html; кодировка=utf-8 /›
- person Noor   schedule 27.05.2014
comment
Можете ли вы включить JSFiddle? Это может быть проблема, в которой сервер отправляет данные.
- person Sam P   schedule 27.05.2014
comment
к сожалению, у меня слишком много зависимостей
- person Noor   schedule 27.05.2014
Ответы (1)
Используйте escape()
в сочетании с decodeURIComponent()
:
decodeURIComponent(escape('R\xc3\xa9union'));
Это должно делать свое дело:
escape('R\xc3\xa9union'); // "R%C3%A9union"
decodeURIComponent("R%C3%A9union"); // "Réunion"
Теперь вы сказали, что не можете сделать это вручную для всех мест, где вам нужны строки из JSON. Я действительно не знаю, как автоматизировать это без повторной сборки JSON с помощью JS, поэтому я бы предложил написать небольшую функцию-оболочку для декодирования на лету:
function dc(str){
return decodeURIComponent(escape(str));
}
Затем вы можете декодировать необходимые строки с минимальными усилиями:
var myString = dc(myJson["some"]["value"]);
Теперь, что еще может работать, но немного более рискованно: JSON.stringify()
весь объект, декодируйте его с помощью двух функций, затем JSON.parse()
еще раз.
person
Cerbrus
schedule
27.05.2014
это определенно помогает, но я использую строку json во многих местах, я не могу сделать это вручную
- person Noor; 27.05.2014
@Noor: Насколько мне известно, нет автоматического способа сообщить JavaScript, как интерпретировать эти строки. Я добавил небольшое предложение о том, как сделать это полуавтоматически.
- person Cerbrus; 27.05.2014