Бьются кодировки в броузере Mozilla.

Бочонок

http://frontender.info
Бьются кодировки в броузере Mozilla.

Доброго времени суток.
Очень странная ситуация.
Есть страничка она отправляет чере <script> запрос php скрипта.
Все страницы в windows-1251.
Во всех броузерах все ОК. В том числе и в FireFox.
В Mozilla 1.4 кодировки "бьются".
В php приходит
PHP:
$_SERVER["REQUEST_URI"]
такого вида
/news/admin/seek_user.php?key=%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE&type=1&subj=1&ppage=10&npage=1
в JS alert выдает
PHP:
seek_user.php?key=Слово&type=1&subj=1&ppage=10&npage=1
Пробовал слать во всех файлах
PHP:
Header("Content-Type: text/html; charset=windows-1251;");
Ничего не понимаю.
В чем может быть проблема (кроме рук) ?

------------------------------------------------
PS. Я очевидно савсем идиот - не могу найти плагин, который показывал бы обмен заголовками для Mozilla. Есть для IE но он неактуален - показывает что все ОК.
 

alexhemp

Новичок
Плагин для FireFox покажет все то-же самое.

http://livehttpheaders.mozdev.org/

Браузер делает все верно, читайте по urldecode/urlencode и escape в javaScript.
 

Бочонок

http://frontender.info
1. livehttpheaders показывает заголовки только для текущей страницы. Тоесть для страницы полученой <script src='text.php'... посмотреть заголовки нельзя. =(

2. urldecode/urlencode и escape
Если я использую encodeURI на строке адреса

PHP:
function ldrun(n){
var t=top.window.document.getElementById('loader');
scr = top.window.document.createElement("script");
t.innerHTML="";
v=t.appendChild(scr);
v.setAttribute('language', 'JavaScript');
v.setAttribute('src',encodeURI(n));
}
, то вместо
PHP:
GET /news/admin/seek_user.php?key=Слово&type=1&subj=1&ppage=10&npage=1 HTTP/1.1
получаю
PHP:
GET /news/admin/seek_user.php?key=%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE&type=1&subj=1&ppage=10&npage=1 HTTP/1.1
Заголовки получены HTTP Analyzer в IE.
При этом PHP говорит, что
PHP:
$_SERVER["REQUEST_URI"]=
/news/admin/seek_user.php?key=Слово&type=1&subj=1&ppage=10&npage=1
и
PHP:
/news/admin/seek_user.php?key=%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE&type=1&subj=1&ppage=10&npage=1
соответственно, для IE, и
PHP:
$_SERVER["REQUEST_URI"]=
/news/admin/seek_user.php?key=%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE&type=1&subj=1&ppage=10&npage=1
и
PHP:
/news/admin/seek_user.php?key=%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE&type=1&subj=1&ppage=10&npage=1
для Mozilla.

3. Браузер делает все верно - почему вообще результаты отличаются ?

Подскажите, пожалуста, где я ошибаюсь и как ошибку исправить.

-----------------------------------------
PS. Все попытки получить в php из "%D0%A1%D0%BB%D0%BE%D0%B2%D0%BE " "Слово" с помощью ф-й rawurldecode, urldecode завершились провалом.

-~{}~ 26.02.06 13:15:

Покопался немного.
1. Если передавать в переменной ?key="Слово" то я получаю Слово в GET['key'].
Немного поэксперементировал я пришол к выводу что это слово "Слово" в кодировке UTF-8 отображенное в кодировке windows-1251. (Может быть бред ?)
2. Ф-й в php, которые осуществляли бы конвертирование UTF-8=>windows-1251 я пока не вижу.
3. Ф-и urldecode/urlencode в JS
encodeURI
--------------
Encodes a Uniform Resource Identifier (URI) by replacing each instance of certain characters by one, two, or three escape sequences representing the UTF-8 encoding of the character.
То-есть, по идее, при отправке из мозиллы происходит как раз действие ф-и encodeURI.
Мне упорно не понятно, почему:

1.
PHP:
alert(n);
v.setAttribute('src',n);
Выдает вполне читабельный резкльтат.
и операции
PHP:
alert(decodeURI(n));
v.setAttribute('src',decodeURI(n));
ничего не меняют ?

2. Почему ситуация наблюдается только в Mozilla ?
3. Как, черт возьми, с этим боротся ?

-~{}~ 26.02.06 13:36:

--------------------------------------------------------------------------------------
ЭЭЭЭЭ...
Вроде бы разобрался.
По URLу нашел ф-и работы с UTF-8
http://phpclub.ru/faq/wakka.php?wakka=encodings/encodings3&v=1d3g

is_ruUTF8() что текст таки UTF-8,a
utf8_win1251($_GET['key']) позволило получить из кракозябрей "Слово".

В остальных броузерах применение этой ф-и протестов вроде бы не вызвало.
Но остался основной вопрос:

Почему такое горе случилось в Мозилле и только в ней ?
 

alexhemp

Новичок
посмотрите как сделано у Котерова в Subsys_jsHttpRequest

http://dklab.ru/lib/Subsys_JsHttpRequest/

Там вся работа идет в UTF-8 как мне представляется.
 
Сверху