Эффективный способ кодирования скандинавских букв в строке

56
8

My javaScript получает строковое значение с сервера:


var name = VALUE_FROM_SERVER;

этот name будет показан на веб-странице, так как name содержит скандинавскую букву (например, имя может быть TÖyoeävä) Мне нужно каким-то образом закодировать его, чтобы отобразить его правильно в браузере.


В javaScript, какой самый эффективный способ кодировать все эти скандинавские буквы?


(Я предпочитаю делать это с помощью Javascript.)


(например, я хотел бы создать JS-функцию, которая принимает TÖyoeävä как параметр и возвращает T & Ouml; yoe & auml; v & auml;)


var encoder=function(string){
for(var s=0; s<string.length; s++){
//Check each letter in the string, if it is Scandinavian, encode it??
}

}

спросил(а) 2011-05-18T17:07:00+04:00 9 лет, 1 месяц назад
1
Решение
66

Я бы посоветовал вам не кодировать в JS. Просто убедитесь, что ваша (html) страница кодирования соответствует тому, что возвращает ваш сервер.


Предпочтительно, это будет кодирование UTF-8 (чтобы иметь возможность поддерживать другие языки по дороге). Но если вас интересуют только скандинавские языки, то ISO-8859-1 (Latin 1) достаточно.


Невозможно сказать из случайной строки байта, если она кодируется или другая (вообще говоря). Таким образом, вы должны знать в своем Javascript, какую кодировку отправляет сервер.

Вам также необходимо установить кодировку страницы в какой-то момент, и эта точка должна быть до того, как браузер начнет интерпретировать свой контент.


Итак, в целом, получение кодировки A с сервера en, конвертирующего в кодирование B на стороне клиента, будет сложным и в значительной степени пустым временем (IMO). Вы не получаете никакой гибкости, которую я вижу, за исключением того, что ваш сервер может изменять кодировки, что не кажется такой хорошей идеей.


UTF-8 полностью спасет вам головные боли.

ответил(а) 2011-05-18T17:13:00+04:00 9 лет, 1 месяц назад
39

Просто используйте кодировку UTF-8 при отправке ответа с сервера. Например

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

ответил(а) 2011-05-18T17:12:00+04:00 9 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема