Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
L>>>я бы порекомендовал пользоваться для вывода символьных данных не ServletOutputStream-ом а PrintWriter-ом, если это не так.
M>>Теперь использую PrintWriter -- один фиг.
L>ну и конечно response.getWriter нужно вызывать после response.setContentType.
Ага, вот:
response.setContentType(CONTENT_TYPE);
response.setCharacterEncoding(Globals.ENCODING);
PrintWriter out = new PrintWriter(response.getWriter());
M>response.setContentType(CONTENT_TYPE);
M>response.setCharacterEncoding(Globals.ENCODING);
M>PrintWriter out = new PrintWriter(response.getWriter());
M>
а точно нигде раньше по коду невызывается response.getWriter()?
Здравствуйте, Mimi, Вы писали:
M>Я потом в логи вывожу — проверяю, какой инкодинг.. и заодно вывожу буффер XML-я, все зашибись. Пишу XML в файл, открываю IE, все ок. А вот на странице где JavaScript берет responseXML уже все кривое. Хотя там тоже UTF-8.. Теряюсь в догадках...
а если напрямую отправить такой запрос из браузера, тоже все в порядке?
M>>Девушка, проверьте свой реальный CONTENT_TYPE. Комментарий справа ниже наводит на смутные сомнения (что за UFT-8?)
А>Осспади... да опечатка в комменте. Прям совсем я что ли...
А>
А>public static final String ENCODING = "UTF-8";
А>
А>
А Вы, девушка, не хихикайте. Вы мне ENCODING показали, а интересует CONTENT_TYPE. Вы проверьте все-таки, что там пишется. Должно быть "text/xml; charset=utf-8".
Здравствуйте, mag2005, Вы писали:
M>>>Девушка, проверьте свой реальный CONTENT_TYPE. Комментарий справа ниже наводит на смутные сомнения (что за UFT-8?)
А>>Осспади... да опечатка в комменте. Прям совсем я что ли...
А>>
А>>public static final String ENCODING = "UTF-8";
А>>
А>>
M>А Вы, девушка, не хихикайте. Вы мне ENCODING показали, а интересует CONTENT_TYPE. Вы проверьте все-таки, что там пишется. Должно быть "text/xml; charset=utf-8".
Хихикать перестала.. значит, смотрим (часть кода из сервлета)
private static final String CONTENT_TYPE = "text/xml; charset=" + Globals.ENCODING;
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
M>>Ага, вот:
M>>
M>>response.setContentType(CONTENT_TYPE);
M>>response.setCharacterEncoding(Globals.ENCODING);
M>>PrintWriter out = new PrintWriter(response.getWriter());
M>>
L>а точно нигде раньше по коду невызывается response.getWriter()?
Это единственный вызов response.getWriter() в том сервлете.
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
M>>Я потом в логи вывожу — проверяю, какой инкодинг.. и заодно вывожу буффер XML-я, все зашибись. Пишу XML в файл, открываю IE, все ок. А вот на странице где JavaScript берет responseXML уже все кривое. Хотя там тоже UTF-8.. Теряюсь в догадках...
L>а если напрямую отправить такой запрос из браузера, тоже все в порядке?
Ой.. не-а
Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..
Re[2]: Unicode && AJAX
От:
Аноним
Дата:
23.10.06 11:59
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Mimi, Вы писали:
M>>Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и показывает вот такую белиберду РљСѓРєСѓ
B>Вид — Кодировка а браузере что показывает?
В том фрейме, где у меня Ajax юзается -- Unicode(UTF-8)
А если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами) и кодировка правым кликом получается просто Unicode и конечно все кодировки disabled..
Здравствуйте, Mimi, Вы писали:
M>Ой.. не-а M>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..
ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.
Re: Unicode && AJAX
От:
Аноним
Дата:
23.10.06 12:16
Оценка:
Здравствуйте, Mimi, Вы писали:
я извиняюсь, а вдруг....
может в самом XML этого нету?
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
M>>Ой.. не-а M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..
L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.
Да, видимо это портачит мой PrintWriter, потому как в лог и в файл пишется ок. Буду искать...
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
M>>Ой.. не-а M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..
L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.
Блинн.. приколитесь:
В сервлете поменяла (так, эксперимента ради, кодировку на Windows-1252), и все показывается как надо. Хотя, XML мне приходит в мой сервлет в утф-8, как такое может быть?
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
M>>Ой.. не-а M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..
L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.
Хм... нашла решение вот какое. Перед "отправкой" из сервлета out.print-ом, я добавила
String toOut = new String(xmlBuf.getBytes("Cp1251"), Globals.ENCODING); // который UTF-8
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Mimi, Вы писали:
M>>Ой.. не-а M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..
L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.
Здравствуйте, Mimi, Вы писали:
M>Блинн.. приколитесь: M>В сервлете поменяла (так, эксперимента ради, кодировку на Windows-1252), и все показывается как надо. Хотя, XML мне приходит в мой сервлет в утф-8, как такое может быть?
Я уже говорил как:
передано куда-то как "Windows-1251", а результат выдан в сервлет, где жестко определено, что это опять же "UTF-8"
Показывается ка надо, потому что сделала обратную перекодировку.
Здравствуйте, Mimi, Вы писали:
M>Хм... нашла решение вот какое. Перед "отправкой" из сервлета out.print-ом, я добавила
M>
String toOut = new String(xmlBuf.getBytes("Cp1251"), Globals.ENCODING); // который UTF-8
M>И все зашибись...
Не зашибись. Ты так и не нашла причину, кучка перекодировок не выход. Ужасно когда ставят костыли, а все дальнейшие подсистемы строятся уже на основе этого костыля (типа искусственного создания исправляющих друг друга ошибок). И когда кто-то потом найдет эту ошибку, ее исправление может быть очень трудоемким, поскольку на ней уже будет многое завязано.