Привет всем!
Очень нужна ваша помощь.
В общем, у меня, вопрос по AJAX-у, кто сталкивался с проблемой кодировки?
Ситуация такая:
у меня есть jsp страница, которая использует Ajax.
Charset для самой страницы — UTF-8 <%@ page contentType="text/html; charset=UTF-8" %>
в AJAX-овой функции я опять же ставлю чарсет в утф-8 http_request.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
И сервлет, который мне XML для response-а возвращает, у него ТОЖЕ инкодинг УТФ-8 <?xml version="1.0" encoding="utf-8"?>
Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и показывает вот такую белиберду РљСѓРєСѓ
Обрыла все ресурсы по AJAX-у которые только нашла, и везде пишут что мол "достаточно поставить хэдер, что у тебя content-type UTF-8, и все должно работать"..
Ниченепонимаю.. я так и делаю, вроде, но нифига из того что кирилицей написано, не видно.
XML смотрела (вывела в файл логгером), все там нормально, русские буквы на месте.
По ходу, все буровит charset в самом http_request-е.
Кто из вас сталкивался с тиакой проблемой? Какие есть для этого решения?
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 08:30:02 GMT:
M> Очень нужна ваша помощь. M> В общем, у меня, вопрос по AJAX-у, кто сталкивался с проблемой M> кодировки? M> Ситуация такая: M> у меня есть jsp страница, которая использует Ajax. M> Charset для самой страницы — UTF-8 <%@ page M> contentType="text/html; charset=UTF-8" %> M> в AJAX-овой функции я опять же ставлю чарсет в утф-8 M> http_request.setRequestHeader("Content-Type", "text/xml; M> charset=UTF-8"); M> И сервлет, который мне XML для response-а возвращает, у него ТОЖЕ M> инкодинг УТФ-8 <?xml version="1.0" encoding="utf-8"?> M> Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и M> показывает вот такую белиберду РљСѓРєСѓ M> Обрыла все ресурсы по AJAX-у которые только нашла, и везде пишут M> что мол "достаточно поставить хэдер, что у тебя content-type M> UTF-8, и все должно работать".. M> Ниченепонимаю.. я так и делаю, вроде, но нифига из того что M> кирилицей написано, не видно. M> XML смотрела (вывела в файл логгером), все там нормально, русские M> буквы на месте. M> По ходу, все буровит charset в самом http_request-е. M> Кто из вас сталкивался с тиакой проблемой? Какие есть для этого M> решения?
Ajax, если вы еще не поняли, это название техники, которая реализуется множеством фреймворков и библиотек. Что конкретно вы используете?
Здравствуйте, Yuri Khomich, Вы писали:
YK>Hello, Mimi! YK>You wrote on Fri, 20 Oct 2006 08:30:02 GMT:
YK>Ajax, если вы еще не поняли, это название техники, которая реализуется множеством фреймворков и библиотек. Что конкретно вы используете?
Мы конкретно используем JavaScript на JSP странице. XML нам приходит из сервлета.
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 10:40:11 GMT:
YK>> Ajax, если вы еще не поняли, это название техники, которая YK>> реализуется множеством фреймворков и библиотек. Что конкретно YK>> вы используете?
M> Мы конкретно используем JavaScript на JSP странице. XML нам M> приходит из сервлета.
Круто. Повторяю вопрос: каким образом вы посылаете запрос? Используете голый XMLHttpRequest?
Здравствуйте, Mycopka, Вы писали:
M>Здравствуйте, Mimi, Вы писали:
M>>Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и показывает вот такую белиберду РљСѓРєСѓ
M>Вопрос на засыпку, белеберда получается при просмотре в какой кодировке? Может быть прошла двойная перекодировка еще до Servlet'а?
При просмотре в УТФ-8.
А каким образом могла произойти перекодировка? Перед посылкой запроса я ставлю хэдер
Здравствуйте, Mimi, Вы писали:
M>Здравствуйте, Mycopka, Вы писали:
M>При просмотре в УТФ-8. M>А каким образом могла произойти перекодировка? Перед посылкой запроса я ставлю хэдер
M>
M>В сервлете контент-тайп стоит "text/xml;charset=UTF-8". Что еще проверить?
Я так понимаю "Куку" в кодировке "UTF-8" было передано куда-то как "Windows-1251", а результат выдан в сервлет, где жестко определено, что это опять же "UTF-8".
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 10:59:51 GMT:
YK>> Круто. Повторяю вопрос: каким образом вы посылаете запрос? YK>> Используете голый XMLHttpRequest?
M> Значит так: M> вот так инициализируется http_request (не знаю, "голый" он при M> этом получается аль нет) M>
Здравствуйте, Mycopka, Вы писали:
M>Я так понимаю "Куку" в кодировке "UTF-8" было передано куда-то как "Windows-1251", а результат выдан в сервлет, где жестко определено, что это опять же "UTF-8".
Из яваскрипта делается запрос AJAX-ом на url (который и есть сервлет с кодировкой утф-8). Этот сервлет берет из бизнес-логики XML (причем, в нем все русские символы нормально читаются, выводила логгером, видела), и как результат сервлет выдает XML. В яваскрипте я этот хмл беру вот так
var xmldoc = http_request.responseXML;
Дальше его разбираю. И вот тут он уже калеченный. Каким образом, непонятно..
Здравствуйте, Yuri Khomich, Вы писали:
YK>Hello, Mimi! YK>You wrote on Fri, 20 Oct 2006 11:54:18 GMT:
YK>>> Подозреваю, что если использовать метод POST то все ок?
M>> да нет.. то же самое.
YK>Давайте код сервлета, который формирует ответ. YK>И проверьте на всякий случай нет ли фильтров, которые могут производить перекодировку.
Фильтр есть, но он вроде как в УТФ-8 все и перекодирует. Вот что у меня добавлено в web.xml
Здравствуйте, Mimi, Вы писали:
M>Проблема в том, что "много строк проскипано"?
Вы Yuri Khomich?
M>Я правильно поняла?
Кто знает...
M>Пардон, не знала.
Так может стоит просветится?
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 12:35:55 GMT:
YK>> Давайте код сервлета, который формирует ответ. YK>> И проверьте на всякий случай нет ли фильтров, которые могут YK>> производить перекодировку.
M> Фильтр есть, но он вроде как в УТФ-8 все и перекодирует.
M>
Я имел в виду фильтр, который перекодирует ответ, а не запрос.
Для уверенности фильтры временно можно убрать, строки и так в UTF-8.
M> Вот примерно код сервлета:
M>
Здравствуйте, Yuri Khomich, Вы писали:
YK>Hello, Mimi! YK>You wrote on Fri, 20 Oct 2006 12:35:55 GMT:
YK>>> Давайте код сервлета, который формирует ответ. YK>>> И проверьте на всякий случай нет ли фильтров, которые могут YK>>> производить перекодировку.
M>> Фильтр есть, но он вроде как в УТФ-8 все и перекодирует.
M>>
YK>Я имел в виду фильтр, который перекодирует ответ, а не запрос. YK>Для уверенности фильтры временно можно убрать, строки и так в UTF-8.
Нет, такого фильтра нет. Думаете, стоит использовать также и фильтр для перекодировки ответа?
Щас попробую убрать фильтр временно...
M>> Вот примерно код сервлета:
M>>