Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с кодировкой кирилицы внутри скрипта (https://javascript.ru/forum/jquery/9094-problema-s-kodirovkojj-kirilicy-vnutri-skripta.html)

Gvozd 29.04.2010 11:05

Цитата:

Сообщение от Gvozd
глянь как в библиотеке URL-кодируется параметр

в самом коде jQuery же!
Цитата:

Сообщение от Gvozd
посмотри стандартные URL-кодировщики

http://javascript.ru/manual/method
Цитата:

Сообщение от Gvozd
а потом если все не катит, напиши свой URL_кодер с блек-джеком, шлюхами, и KOI8-R

http://javascript.ru/String
PS забыл о самом простом решении - серверный iconv же

GRIG 29.04.2010 11:15

Чем дальше, тем все чудесатее и чудесатее...
1) Думал, что вся эта история - глюк старой версии JQuery (у меня 1.3.2). Сходил на официальный сайт и утянул к себе 1.4.2 - мой скрипт вообще перестал работать. Утянул 1.4 - работоспособность так и не восстановилась. Что за хрень???????
2) Взял отладочную версию 1.3.2 и пошел по ней в FireBug'е трассировкой. Результат такой: для отсылки информации на сервер JQuery создает объект типа XMLHttpRequest и применяет его метод send(). Перекодировка URLа идет внутри этого метода. А исходники этого метода не доступны, так что выяснить, почему он так нехорошо себя ведет, невозможно.

Что касается предложения использовать iconv() на сервере. Считаю такой вариант неудачным. Потому что для этого сервер должен знать, в какой кодировке приходят данные от броузера, при том, что броузер про это ничего не говорит. Так что я бы предпочел iconv() на броузере (если такое вообще возможно)

GRIG 29.04.2010 11:27

UPD. Проблема решилась путем замены вот этого:
$.getJSON( 'myscript.php?page=1' + form_data, { }, myfunc() );

на вот это:
$.getJSON( 'myscript.php?page=1' + encodeURI( form_data ), { }, myfunc() );

И, естественно, на стороне сервера нужен iconv() для преобразования UTF8 -> KOI8-R

Gvozd 29.04.2010 11:30

Цитата:

Сообщение от GRIG
JQuery создает объект типа XMLHttpRequest и применяет его метод send(). Перекодировка URLа идет внутри этого метода. А исходники этого метода не доступны, так что выяснить, почему он так нехорошо себя ведет, невозможно.

жжоте!
это "родной" метод JavaScript-а


Часовой пояс GMT +3, время: 09:24.