Страницы: 1
Пишу расширение для Firefox и столкнулся с такой проблемой:
Есть в расширении строка для ввода текста, нужно перенаправить пользователя на определённую страничку передав туда этот текст прямо в строке адреса, который имеет примерно следущий вид
http://host/script?str=%CF%F0%E8%E2%E5%F2
Когда у пользователя стоит, например, русский Windows, то всё хорошо, т.е. введённые символы имеют код меньше 256 и кодируются одной последовательностью вида %NN, но в остальных случаях уже хуже (например английский линукс или винда), введённые пользователем русские символы представляются в виде юникода и следователь уже в строке запроса получается несколько последовательностей %NN на один символ.
Вопрос заключается в следующем, как мне независимо от платформы (Windows, Linux, Mac) и версии браузера (русская, английская, ...) переконвертировать строку в кодировку Windows-1251, и если там присутствуют символы которых нет в кодировке 1251, то заменить их например на знак вопроса ?
Вот что используется сейчас (и естественно работает, только на русской винде)
Отсутствует
XuTMAH
даже если ваша строка передастся в виде %NN, то php (или другой серверный язык) в любомслучае сначала приведёт его к нормальному виду, а потом уже возьёмтся за обработку.
Отсутствует
Ну само собой приведёт, но он ожидает увидеть только кодировку Windows-1251 и следовательно каждая последовательность %NN приведётся к одной какой-то букве, а если ему передаётся юникодный символ, а у юникода 2 байта на букву, то одна буква передастся на сервер в виде %NN%MM, а сервер будет интерпретировать эту последовательность не как один символ, а как два, и в итоге получаются каракули...
Отсутствует
Ну а вообще, как перевести из юникода в Windows-1251 ?
var s = "строка"; var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); suc. charset = "windows-1251"; var cs = suc. ConvertFromUnicode (s); print (cs);
Отредактировано Anton (28-09-2007 20:12:07)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
А у меня проблемы с кириллицей Windows-1251. А точнее, отображается как западноевропейская ..search.php?q=Кириллица - Êèðèëëèöà. Как сие побороть?
Добавлено:
Проблема разрешилась, был конфликт с расширением Gmail Manager . Отключил его на .... потому как нефиг кириллицу в западноевропейскую конвертить.
Отредактировано _backup (12-10-2007 13:14:27)
Отсутствует
Страницы: 1