Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№120-09-2007 01:21:44

XuTMAH
Участник
 
Группа: Members
Зарегистрирован: 23-05-2007
Сообщений: 32
UA: Firefox 2.0

[?] Перекодировка в Windows-1251

Пишу расширение для Firefox и столкнулся с такой проблемой:
Есть в расширении строка для ввода текста, нужно перенаправить пользователя на определённую страничку передав туда этот текст прямо в строке адреса, который имеет примерно следущий вид
http://host/script?str=%CF%F0%E8%E2%E5%F2
Когда у пользователя стоит, например, русский Windows, то всё хорошо, т.е. введённые символы имеют код меньше 256 и кодируются одной последовательностью вида %NN, но в остальных случаях уже хуже (например английский линукс или винда), введённые пользователем русские символы представляются в виде юникода и следователь уже в строке запроса получается несколько последовательностей %NN на один символ.

Вопрос заключается в следующем, как мне независимо от платформы (Windows, Linux, Mac) и версии браузера (русская, английская, ...) переконвертировать строку в кодировку Windows-1251, и если там присутствуют символы которых нет в кодировке 1251, то заменить их например на знак вопроса ?

Вот что используется сейчас (и естественно работает, только на русской винде)

Выделить код

Код:

gBrowser.loadURI( base_url + textbox.value );

Отсутствует

 

№220-09-2007 05:38:26

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785

Re: [?] Перекодировка в Windows-1251

XuTMAH
даже если ваша строка передастся в виде %NN, то php (или другой серверный язык) в любомслучае сначала приведёт его к нормальному виду, а потом уже возьёмтся за обработку.

Отсутствует

 

№320-09-2007 11:19:52

XuTMAH
Участник
 
Группа: Members
Зарегистрирован: 23-05-2007
Сообщений: 32
UA: Firefox 2.0

Re: [?] Перекодировка в Windows-1251

Ну само собой приведёт, но он ожидает увидеть только кодировку Windows-1251 и следовательно каждая последовательность %NN приведётся к одной какой-то букве, а если ему передаётся юникодный символ, а у юникода 2 байта на букву, то одна буква передастся на сервер в виде %NN%MM, а сервер будет интерпретировать эту последовательность не как один символ, а как два, и в итоге получаются каракули...

Отсутствует

 

№428-09-2007 19:42:06

XuTMAH
Участник
 
Группа: Members
Зарегистрирован: 23-05-2007
Сообщений: 32
UA: Firefox 2.0

Re: [?] Перекодировка в Windows-1251

Ну а вообще, как перевести из юникода в Windows-1251 ?

Отсутствует

 

№528-09-2007 20:11:19

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: [?] Перекодировка в Windows-1251

Ну а вообще, как перевести из юникода в 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ентов на части порвет !!!

Отсутствует

 

№601-10-2007 09:41:03

XuTMAH
Участник
 
Группа: Members
Зарегистрирован: 23-05-2007
Сообщений: 32
UA: Firefox 2.0

Re: [?] Перекодировка в Windows-1251

Спасибо! Всё получилось, всё работает!

Отсутствует

 

№711-10-2007 23:14:02

_backup
Участник
 
Группа: Members
Зарегистрирован: 12-02-2007
Сообщений: 25
UA: Firefox 2.0

Re: [?] Перекодировка в Windows-1251

А у меня проблемы с кириллицей Windows-1251. А точнее, отображается как западноевропейская ..search.php?q=Кириллица  -  Êèðèëëèöà. Как сие побороть?

Добавлено:

Проблема разрешилась, был конфликт с расширением Gmail Manager . Отключил его на .... потому как нефиг кириллицу в западноевропейскую конвертить.

Отредактировано _backup (12-10-2007 13:14:27)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]