Пишу в расширении функцию отправки данных на сайт. Т.к. объём может быть большой, то использую метод POST.
  Всё работает, но возникла проблема  с кодировкой. Данные отправляются в кодировке Windows-1251, приходит абракодабра. Использовал приведённый на форуме перекодировщик, не помогло, приходит тоже абракодабра, но другая.

В чём может быть моя ошибка?


Конвертор:

Выделить код

Код:

function convertor(str)
{
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
                          .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "Windows-1251";//"windows-1251"
str = converter.ConvertFromUnicode(str);
return str;
}

Отправка данных.

Выделить код

Код:

var hey='Сообщить о событии';
var name='Название на кириллице';
var text='Текст, тоже на кириллице ';

var http = new XMLHttpRequest();
var postdata= "name="+convertor(name)+"&safe="+hey+"&text="+convertor(text)+"&tip=4&action=post"; 

http.open("POST", "http://forum.mozilla-russia.org/edit.php?name="+name+"", true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", postdata.length);

http.onreadystatechange = function() {//Call a function when the state changes.
   if(http.readyState == 4 && http.status == 200) {
      alert(http.responseText);
   }
}
http.send(postdata);

приходит тоже абракодабра, но другая.

какая - другая?

Выделить код

Код:

return str;

я бы заменил на

Выделить код

Код:

return escape(str);

Shutnik, спасибо, помогло.
:rolleyes:

пишу тулбар, в нем идет захват фразы для поиска (вводится пользователем). при поиске само собой абракадабра.
попробовал поставить конвертер, но при поиске конвертится в ASCII и вместо русского слова ищет что то типа "f2e5f1f2" (тест)
как исправить?

08-07-2009 17:47:51
либа как а = d0b0
и запрос "d182d0b5d181d182" вместо "тест"

Данные браузеру шлются как UTF-8, пытаюсь ковертировать в windiws-1251 и нифига =(

eXeLe пишет

Данные браузеру шлются как UTF-8

Их, может быть, сначал перекодировать в Unicod из UTF-8, а потом - в нужную кодировку ?

разобрался с проблемой, выкинул кое-какой код, из-за которого видимо не удавалось нормально перекодировать фразу.

converter.charset = "UTF-8";
str = converter.ConvertToUnicode(str);

может быть даже будет достаточно и этого одного преобразования.