Проблема с кодировкой кирилицы внутри скрипта
Привет всем. Помогите решить такую проблему.
На странице есть форма для ввода фильтров для поискового запроса. Среди прочего в этой форме есть такой кусок: <select id="my_select"> <option value="default">Default</option> </select> После того, как страница загружена в броузер, срабатывает скрипт, который средствами AJAX'а подгружает другие варианты для этого select'а. При этом делается следующее: for( var i = 0; i < data.n; i++ ) $('#my_select').append( '<option>' + data.selections[i] + '</option>' ); А потом пользоваетель как-то инициирует отправку формы на сервер. При этом генерится строка для передачи на сервер методом GET. Для указанного куска делается следующее: form_data += "&" + send_form.elements[i].id + "=" + send_form.elements[i][ send_form.elements[i].selectedIndex ].value; Неприятность заключается в следующем. Подгруженные варианты выбора могут содержать в себе русские буквы. При генерации строки-запроса для передачи на сервер эти буквы копируются "как есть" (проверял в отладчике). Однако потом они как-то преобразуются в конструкцию вида "%C1%C2%C3..." Преобразовать, естественно, надо, поскольку не все символы допустимы в URL'е. Но прикол в том, что это преобразование ведется соответственно виндовой кодировке, хотя сервер все данные (и исходную страницу, и последующие варианты выбора) присылает в КОИ8-Р. Да и броузер живет на линухе, который русифицирован в кодировке КОИ8-Р. Откуда тут берется виндовая кодировка - совершенно непонятно. Есть какие-нибудь идеи? |
Цитата:
Цитата:
|
1. Данные на сервер действительно передаются уже перекодированными. Но перекодировка происходит уже после того, как мой скрипт отдал данные для отсылки.
2. Конкретно в моем случае - по виндовой. Увы, это экспериментальный факт. |
UPD: Забыл написать один важный момент. Отправка формы на сервер производится средствами AJAX'а. А точнее с помощью вызова $.getJSON(...);
|
используйте явный UTF повсюду, и не парьте себе мозги
|
Не могу. Речь идет об интранете, в котором КОИ8-Р - корпоративный стандарт.
|
GRIG,
Сочувствую. |
UPD. Экспериментальным путем (с помощью модификации скриптов и отладчика FireBug) установлено следующее:
Если для отсылки формы на сервер применяется код window.location = 'myscript.php?page=1' + form_data; То буквы "СЭБ" из того списка выбора преобразуются в "%F3%FC%E2", что соответствует кодировке KOI8-R Если же для отсылки формы на сервер применяется код $.getJSON( 'myscript.php?page=1' + form_data, { }, myfunc() ); То те же самые буквы преобразуются в "%D1%DD%C1", что соответствует кодировке win-1251. ВОПРОС: какого черта????? |
глянь как в библиотеке URL-кодируется параметр
посмотри стандартные URL-кодировщики а потом если все не катит, напиши свой URL_кодер с блек-джеком, шлюхами, и KOI8-R |
А где это смотреть?
|
Часовой пояс GMT +3, время: 17:07. |