Re[11]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 14:00
Оценка:
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 13:17:41 GMT:

YK>> Я имел в виду фильтр, который перекодирует ответ, а не запрос.

YK>> Для уверенности фильтры временно можно убрать, строки и так в
YK>> UTF-8.

M> Нет, такого фильтра нет. Думаете, стоит использовать также и

M> фильтр для перекодировки ответа?

Использовать нужно то, что необходимо. В данном конкретном случае фильтр для ответа не нужен.

M>>>
 M>>>     if(isAuthorizedToGetThisInfo) retXmlBuf =
 M>>> blMan.getXMLfor(utilities.Globals.SOME_DEFINED_VAR);
 M>>>     out.println(retXmlBuf);
 M>>>


YK>> Если retXmlBuf это строка, а не какой-нибудь массив байт, то

YK>> идей больше нет.

M> retXmlBuf у нас String.

M> Т.е. если бы это был byte array то возможно это могло стать
M> причиной ошибки?

Проблема могла бы быть, если бы байты перегонялись в строку с использовнием кодировки по умолчанию, отличной от UTF-8. Но как себя ведет PrintWriter c массивами байт я честно говоря не помню.
Posted via RSDN NNTP Server 2.0
Re[9]: Unicode && AJAX
От: yacc  
Дата: 20.10.06 14:23
Оценка:
M>// Собсна буфер:
M>// <?xml version="1.0" encoding="utf-8"?>
(1)
[.....]
M>// <Name Name="Name" formap="1">Куку</Name>
M>// <Description Name="Description">тралала</Description>
(2)
[.....]
разве в utf-8 русские буковки так выглядят??
откуда вы xml берёте?
не может такого получиться, что взяли строки в cp1251, а в заголовок encoding — utf-8??
а вот вы попробуйте взять тот xml который вы отквотили, сохраните в файлик *.xml и IE его откройте.
ведь не откроется он...
Re[10]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 14:31
Оценка:
Hello, yacc!
You wrote on Fri, 20 Oct 2006 14:23:35 GMT:

M>> // Собсна буфер:

M>> // <?xml version="1.0" encoding="utf-8"?>
y> (1)
y> [.....]
M>> // <Name Name="Name" formap="1">Куку</Name>
M>> // <Description Name="Description">тралала</Description>
y> (2)
y> [.....]
y> разве в utf-8 русские буковки так выглядят??

Ну а как _буковки_ еще могут выглядеть?
Она ж вам не бинарник показывает.
Posted via RSDN NNTP Server 2.0
Re[11]: Unicode && AJAX
От: yacc  
Дата: 20.10.06 14:45
Оценка:
y>> разве в utf-8 русские буковки так выглядят??
YK>Ну а как _буковки_ еще могут выглядеть?
русские буковки в utf-8 как выглядят? примерно так как у нее в исходном сообщении: РљСѓРєСѓ

YK>Она ж вам не бинарник показывает.

гхм.. что есть бинарник в случае xml-я?

у неё я понял вроде был фильтр, который перекодирует всё в utf.
ей бы логировать xml-и уже после отработки фильтра. и показать что получается
Re[12]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 14:50
Оценка:
Hello, yacc!
You wrote on Fri, 20 Oct 2006 14:45:34 GMT:

y>>> разве в utf-8 русские буковки так выглядят??

YK>> Ну а как _буковки_ еще могут выглядеть?
y> русские буковки в utf-8 как выглядят? примерно так как у нее в
y> исходном сообщении: РљСѓРєСѓ

Русские символы, так же как и все другие, представляются в виде байт. Как это выглядит, зависит исключительно от того, какую кодировку использовать для просмотра.

YK>> Она ж вам не бинарник показывает.

y> гхм.. что есть бинарник в случае xml-я?

Байты.

y> у неё я понял вроде был фильтр, который перекодирует всё в utf.

y> ей бы логировать xml-и уже после отработки фильтра. и показать что
y> получается

Фильтр этот давно уже отключить надо
Posted via RSDN NNTP Server 2.0
Re[13]: Unicode && AJAX
От: yacc  
Дата: 20.10.06 15:20
Оценка:
YK>Русские символы, так же как и все другие, представляются в виде байт. Как это выглядит, зависит исключительно от того, какую кодировку использовать для просмотра.
лол. за ликбез спасибо)))
тут сообщения в 1251. в её терминах я и говорю.

y>> гхм.. что есть бинарник в случае xml-я?

YK>Байты.
логично.

YK>Фильтр этот давно уже отключить надо

надо. но если у неё действительно изначальные xml-и в cp1251, а в заголовке прописан utf — после отключени фильтра responseXML работать не будет...
Re[5]: Unicode && AJAX
От: Gurney Великобритания www.kharlamov.biz
Дата: 20.10.06 16:10
Оценка:
Mimi wrote:
> http_request.overrideMimeType('text/xml');

Думаю здесь должно быть:
    http_request.overrideMimeType('text/xml; charset=UTF-8");
Posted via RSDN NNTP Server 2.0
Re[5]: Unicode && AJAX
От: Gurney Великобритания www.kharlamov.biz
Дата: 20.10.06 16:17
Оценка:
Mimi wrote:
> http_request.overrideMimeType('text/xml');
Думаю здесь должно быть:
[lava]
http_request.overrideMimeType('text/xml; charset=UTF-8");
[/java]
Posted via RSDN NNTP Server 2.0
Re[9]: Unicode && AJAX
От: mag2005  
Дата: 20.10.06 20:25
Оценка: 2 (1)
Здравствуйте, Mimi, Вы писали:

Девушка, проверьте свой реальный CONTENT_TYPE. Комментарий справа ниже наводит на смутные сомнения (что за UFT-8?)

M> response.setContentType(CONTENT_TYPE); // "text/xml; charset=UFT-8" берется из глобалсов


Других причин Ваших бед не вижу.

Кроме того, Ваш запрос вызывает тоже некоторое недоумение:

M> http_request.onreadystatechange = та-функция-которая-вызовется-при-ответе;

M> http_request.open('GET', url);
M> http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
M> http_request.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
M> http_request.send(null);

Во-первых, чем мудрить с "If-Modified-Since", проще на сервере при ответе на запрос добавлять заголовки

response.setHeader( "Cache-Control", "no-cache" );
response.setHeader( "Pragma", "no-cache" );

Во-вторых, Ваш "Content-Type" в запросах типа 'GET' не работает. Он определяет кодировку тела запроса ('POST'). Можете смело убрать. Запрос (url) у Вас пойдет в той кодировке, которую имеет контекст (страница, содержащая код JavaScript). У Вас это utf-8, если не ошибаюсь.

И напоследок совет для отладки:

M> В яваскрипте я этот хмл беру вот так

M>
M> var xmldoc = http_request.responseXML;

перед "вот так" вставьте

alert(http_request.responseText);

и увидите тот XML, который приходит, во всей красе.
Re[10]: Unicode && AJAX
От: Аноним  
Дата: 23.10.06 06:48
Оценка:
Здравствуйте, mag2005, Вы писали:

M>Здравствуйте, Mimi, Вы писали:


M>Девушка, проверьте свой реальный CONTENT_TYPE. Комментарий справа ниже наводит на смутные сомнения (что за UFT-8?)


Осспади... да опечатка в комменте. Прям совсем я что ли...

public static final String ENCODING = "UTF-8";




M>> response.setContentType(CONTENT_TYPE); // "text/xml; charset=UFT-8" берется из глобалсов


M>Других причин Ваших бед не вижу.


M>Кроме того, Ваш запрос вызывает тоже некоторое недоумение:


M>> http_request.onreadystatechange = та-функция-которая-вызовется-при-ответе;

M>> http_request.open('GET', url);
M>> http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
M>> http_request.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
M>> http_request.send(null);

M>Во-первых, чем мудрить с "If-Modified-Since", проще на сервере при ответе на запрос добавлять заголовки


M>response.setHeader( "Cache-Control", "no-cache" );

M>response.setHeader( "Pragma", "no-cache" );

Почему "мудрить"? И чем этот вариант лучше? Эффект-то один и тот же.

M>Во-вторых, Ваш "Content-Type" в запросах типа 'GET' не работает. Он определяет кодировку тела запроса ('POST'). Можете смело убрать. Запрос (url) у Вас пойдет в той кодировке, которую имеет контекст (страница, содержащая код JavaScript). У Вас это utf-8, если не ошибаюсь.


Именно UTF-8..
На POST меняла -- результат тот же.

M>И напоследок совет для отладки:


M>> В яваскрипте я этот хмл беру вот так

M>>
M>> var xmldoc = http_request.responseXML;

M>перед "вот так" вставьте


M>alert(http_request.responseText);


M>и увидите тот XML, который приходит, во всей красе.


Да делала я так. Еще в самом начале, когда заметила что русские буквы мне на страницу как положено не показываются.
В XML [логгером в файл] мне пишется все ок, а на страницу попадает криво, причем только там где я использую Ajax.
Re[5]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 06:58
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Из яваскрипта делается запрос AJAX-ом на url (который и есть сервлет с кодировкой утф-8). Этот сервлет берет из бизнес-логики XML (причем, в нем все русские символы нормально читаются, выводила логгером, видела).


Нормально читаются в какой кодировке?
Re[10]: Unicode && AJAX
От: Аноним  
Дата: 23.10.06 07:34
Оценка:
Здравствуйте, yacc, Вы писали:

M>>// Собсна буфер:

M>>// <?xml version="1.0" encoding="utf-8"?>
Y>(1)
Y>[.....]
M>>// <Name Name="Name" formap="1">Куку</Name>
M>>// <Description Name="Description">тралала</Description>
Y>(2)
Y>[.....]
Y>разве в utf-8 русские буковки так выглядят??
Y>откуда вы xml берёте?

XML берется из сервлета.

Y>не может такого получиться, что взяли строки в cp1251, а в заголовок encoding — utf-8??

Y>а вот вы попробуйте взять тот xml который вы отквотили, сохраните в файлик *.xml и IE его откройте.
Y>ведь не откроется он...

В том-то и дело, что открывается. Я в самом начале еще писала, что XML в логи на диск пишется нормально, русские буквы читаются.
Re[6]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 07:37
Оценка:
Здравствуйте, Gurney, Вы писали:

G>Mimi wrote:

>> http_request.overrideMimeType('text/xml');

G>Думаю здесь должно быть:

G>
G>    http_request.overrideMimeType('text/xml; charset=UTF-8");
G>


Сделала... Увы, никакого эффекта.
Re[11]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 07:42
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>В том-то и дело, что открывается. Я в самом начале еще писала, что XML в логи на диск пишется нормально, русские буквы читаются.

выложи сюда как прикрепленый файл твой XML, или куда-нить в доступное место.
Re[12]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 08:02
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


А>>В том-то и дело, что открывается. Я в самом начале еще писала, что XML в логи на диск пишется нормально, русские буквы читаются.

L>выложи сюда как прикрепленый файл твой XML, или куда-нить в доступное место.

Вот здесь можно посмотреть XML
Re[9]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 08:21
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Вот примерно код сервлета:


M>[code]

M>public void doPost(HttpServletRequest request, HttpServletResponse response) throws
M> ServletException, IOException
M>{
M> // проверяем, есть ли юзер в сессии
M> // если да, пишем лог, что такой-то юзер запросил такую-то инфу
M> // ... проверяем права юзера...
M> // если можно позволить юзеру достать ту инфу, то

M> response.setContentType(CONTENT_TYPE); // "text/xml; charset=UFT-8" берется из глобалсов

M> blManager blMan = new blManager();
M> String retXmlBuf = null;

M> if(isAuthorizedToGetThisInfo) retXmlBuf = blMan.getXMLfor(utilities.Globals.SOME_DEFINED_VAR);

M> out.println(retXmlBuf);
M> out.close();

я бы порекомендовал пользоваться для вывода символьных данных не ServletOutputStream-ом а PrintWriter-ом, если это не так.
Re[10]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 09:15
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, Mimi, Вы писали:


M>>Вот примерно код сервлета:


M>>[code]

M>>public void doPost(HttpServletRequest request, HttpServletResponse response) throws
M>> ServletException, IOException
M>>{
M>> // проверяем, есть ли юзер в сессии
M>> // если да, пишем лог, что такой-то юзер запросил такую-то инфу
M>> // ... проверяем права юзера...
M>> // если можно позволить юзеру достать ту инфу, то

M>> response.setContentType(CONTENT_TYPE); // "text/xml; charset=UFT-8" берется из глобалсов

M>> blManager blMan = new blManager();
M>> String retXmlBuf = null;

M>> if(isAuthorizedToGetThisInfo) retXmlBuf = blMan.getXMLfor(utilities.Globals.SOME_DEFINED_VAR);

M>> out.println(retXmlBuf);
M>> out.close();

L>я бы порекомендовал пользоваться для вывода символьных данных не ServletOutputStream-ом а PrintWriter-ом, если это не так.


Теперь использую PrintWriter -- один фиг.
Re[13]: Unicode && AJAX
От: Blazkowicz Россия  
Дата: 23.10.06 09:22
Оценка:
Здравствуйте, Mimi, Вы писали:
А>>>В том-то и дело, что открывается. Я в самом начале еще писала, что XML в логи на диск пишется нормально, русские буквы читаются.
L>>выложи сюда как прикрепленый файл твой XML, или куда-нить в доступное место.

M>Вот здесь можно посмотреть XML


Таки всё в UTF.
Re[11]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 09:28
Оценка:
Здравствуйте, Mimi, Вы писали:

L>>я бы порекомендовал пользоваться для вывода символьных данных не ServletOutputStream-ом а PrintWriter-ом, если это не так.


M>Теперь использую PrintWriter -- один фиг.


ну и конечно response.getWriter нужно вызывать после response.setContentType.
Re[6]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 09:32
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, Mimi, Вы писали:


M>>Из яваскрипта делается запрос AJAX-ом на url (который и есть сервлет с кодировкой утф-8). Этот сервлет берет из бизнес-логики XML (причем, в нем все русские символы нормально читаются, выводила логгером, видела).


L>Нормально читаются в какой кодировке?


Ну, в той, которая у меня в Сервлете, т.е. UTF-8

response.setCharacterEncoding(Globals.ENCODING);  // "UTF-8"
PrintWriter out = new PrintWriter(response.getWriter());


Я потом в логи вывожу — проверяю, какой инкодинг.. и заодно вывожу буффер XML-я, все зашибись. Пишу XML в файл, открываю IE, все ок. А вот на странице где JavaScript берет responseXML уже все кривое. Хотя там тоже UTF-8.. Теряюсь в догадках...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.