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
От: Mimi  
Дата: 23.10.06 14:04
Оценка: -1
Здравствуйте, Lucker, Вы писали:

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


M>>Ой.. не-а

M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..

L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.


Хм... нашла решение вот какое. Перед "отправкой" из сервлета out.print-ом, я добавила

String toOut = new String(xmlBuf.getBytes("Cp1251"), Globals.ENCODING); // который UTF-8

И все зашибись...
Всем спасибо за помощь!!!

все, ушла пить пиво
Re[11]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 14:16
Оценка: +1
Здравствуйте, Mimi, Вы писали:

M>
M>String toOut = new String(xmlBuf.getBytes("Cp1251"), Globals.ENCODING); // который UTF-8
M>

M>И все зашибись...
M>Всем спасибо за помощь!!!

мдя. таки xml не правильный приходит, ножон UTF-8 а имеете Cp1251. Не хорошо обманывать то людей.
Unicode && AJAX
От: Mimi  
Дата: 20.10.06 08:30
Оценка:
Привет всем!
Очень нужна ваша помощь.
В общем, у меня, вопрос по 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-е.
Кто из вас сталкивался с тиакой проблемой? Какие есть для этого решения?
Re: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 09:07
Оценка:
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, если вы еще не поняли, это название техники, которая реализуется множеством фреймворков и библиотек. Что конкретно вы используете?
Posted via RSDN NNTP Server 2.0
Re[2]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 10:40
Оценка:
Здравствуйте, Yuri Khomich, Вы писали:

YK>Hello, Mimi!

YK>You wrote on Fri, 20 Oct 2006 08:30:02 GMT:

YK>Ajax, если вы еще не поняли, это название техники, которая реализуется множеством фреймворков и библиотек. Что конкретно вы используете?


Мы конкретно используем JavaScript на JSP странице. XML нам приходит из сервлета.
Re[3]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 10:52
Оценка:
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 10:40:11 GMT:

YK>> Ajax, если вы еще не поняли, это название техники, которая

YK>> реализуется множеством фреймворков и библиотек. Что конкретно
YK>> вы используете?

M> Мы конкретно используем JavaScript на JSP странице. XML нам

M> приходит из сервлета.

Круто. Повторяю вопрос: каким образом вы посылаете запрос? Используете голый XMLHttpRequest?
Posted via RSDN NNTP Server 2.0
Re[4]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 10:59
Оценка:
YK>Круто. Повторяю вопрос: каким образом вы посылаете запрос? Используете голый XMLHttpRequest?

Значит так:
вот так инициализируется http_request (не знаю, "голый" он при этом получается аль нет)
http_request = false;
    if (window.XMLHttpRequest)
    {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType)
        {
            http_request.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject)
    { // IE
        try
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            alert("Exception caught " + e);
            try
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                alert("exception " + e);
            }
        }
    }


И посылается запрос вот так:

http_request.onreadystatechange = та-функция-которая-вызовется-при-ответе;
http_request.open('GET', url);
http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
http_request.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
http_request.send(null);


Фотт..
Re: Unicode && AJAX
От: Mycopka Россия http://mhehue.info
Дата: 20.10.06 11:07
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и показывает вот такую белиберду РљСѓРєСѓ


Вопрос на засыпку, белеберда получается при просмотре в какой кодировке? Может быть прошла двойная перекодировка еще до Servlet'а?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
---
With best regards и все такое :)
Re[2]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 11:17
Оценка:
Здравствуйте, Mycopka, Вы писали:

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


M>>Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и показывает вот такую белиберду РљСѓРєСѓ


M>Вопрос на засыпку, белеберда получается при просмотре в какой кодировке? Может быть прошла двойная перекодировка еще до Servlet'а?


При просмотре в УТФ-8.
А каким образом могла произойти перекодировка? Перед посылкой запроса я ставлю хэдер

http_request.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
http_request.send();


В сервлете контент-тайп стоит "text/xml;charset=UTF-8". Что еще проверить?
Re[3]: Unicode && AJAX
От: Mycopka Россия http://mhehue.info
Дата: 20.10.06 11:28
Оценка:
Здравствуйте, Mimi, Вы писали:

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


M>При просмотре в УТФ-8.

M>А каким образом могла произойти перекодировка? Перед посылкой запроса я ставлю хэдер

M>
M>http_request.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
M>http_request.send();
M>


M>В сервлете контент-тайп стоит "text/xml;charset=UTF-8". Что еще проверить?


Я так понимаю "Куку" в кодировке "UTF-8" было передано куда-то как "Windows-1251", а результат выдан в сервлет, где жестко определено, что это опять же "UTF-8".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
---
With best regards и все такое :)
Re[5]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 11:48
Оценка:
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 10:59:51 GMT:

YK>> Круто. Повторяю вопрос: каким образом вы посылаете запрос?

YK>> Используете голый XMLHttpRequest?

M> Значит так:

M> вот так инициализируется http_request (не знаю, "голый" он при
M> этом получается аль нет)
M>
M> http_request = false;
M>     if (window.XMLHttpRequest)
M>     {
M>         http_request = new XMLHttpRequest();
M>         if (http_request.overrideMimeType)
M>         {
M>             http_request.overrideMimeType('text/xml');
M>         }
M>     }
M>     else if (window.ActiveXObject)
M>     { // IE         try         {
M>             http_request = new ActiveXObject("Msxml2.XMLHTTP");
M>         }
M>         catch (e)
M>         {
M>             alert("Exception caught " + e);
M>             try             {
M>                 http_request = new
M> ActiveXObject("Microsoft.XMLHTTP");
M>             }
M>             catch (e)
M>             {
M>                 alert("exception " + e);
M>             }
M>         }
M>     }
M>


M> И посылается запрос вот так:


M>
M> http_request.onreadystatechange =
M> та-функция-которая-вызовется-при-ответе;
M> http_request.open('GET', url);
M> http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan
M> 2000 00:00:00 GMT");
M> http_request.setRequestHeader("Content-Type", "text/xml;
M> charset=UTF-8");
M> http_request.send(null);
M>


Подозреваю, что если использовать метод POST то все ок?
Posted via RSDN NNTP Server 2.0
Re[4]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 11:50
Оценка:
Здравствуйте, Mycopka, Вы писали:

M>Я так понимаю "Куку" в кодировке "UTF-8" было передано куда-то как "Windows-1251", а результат выдан в сервлет, где жестко определено, что это опять же "UTF-8".


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

var xmldoc = http_request.responseXML;


Дальше его разбираю. И вот тут он уже калеченный. Каким образом, непонятно..
Re[6]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 11:54
Оценка:
YK>Подозреваю, что если использовать метод POST то все ок?

да нет.. то же самое.
Re[7]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 12:14
Оценка:
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 11:54:18 GMT:

YK>> Подозреваю, что если использовать метод POST то все ок?


M> да нет.. то же самое.


Давайте код сервлета, который формирует ответ.
И проверьте на всякий случай нет ли фильтров, которые могут производить перекодировку.
Posted via RSDN NNTP Server 2.0
Re[6]: [от модератора]
От: Blazkowicz Россия  
Дата: 20.10.06 12:21
Оценка:
Здравствуйте, Yuri Khomich, Вы писали:

<много строк поскипано>
YK>Подозреваю, что если использовать метод POST то все ок?


Подобный способ цитирования — верная дорога в баню. Будьте осторожны.
Re[8]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 12:35
Оценка:
Здравствуйте, 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


<filter>
    <filter-name>Charset Filter</filter-name>
    <filter-class>utilities.CharsetFilter</filter-class>
    <init-param>
      <param-name>requestEncoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>



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


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

    response.setContentType(CONTENT_TYPE); // "text/xml; charset=UFT-8" берется из глобалсов 
    blManager blMan = new blManager();
    String retXmlBuf = null;
    
    if(isAuthorizedToGetThisInfo) retXmlBuf = blMan.getXMLfor(utilities.Globals.SOME_DEFINED_VAR);
    out.println(retXmlBuf);
    out.close();
    

// вот что пишется в лог:

// Content-Type: text/xml;charset=UTF-8
// ------------------------------------------
// Собсна буфер:
// <?xml version="1.0" encoding="utf-8"?>
// <Projects Name="Projects">
// <Project ID="17" Name="Project">
// <Name Name="Name" formap="1">Куку</Name>
// <Description Name="Description">тралала</Description>
// <CustomerID Name="Customer ID">54</CustomerID>
// <CustomerCompanyName Name="Customer Company Name"/>
// <CustomerContactFirstName Name="Customer Contact First Name">Василиса</CustomerContactFirstName>
// <CustomerContactLastName Name="Customer Contact Last Name">Прекрасная</CustomerContactLastName>
// <CustomerBillingAddress Name="Customer Billing Address"/>
// <CustomerCity Name="Customer City"/>
// <CustomerStateorProvince Name="Customer State or Province"/>
// <CustomerPostalCode Name="Customer Postal Code"/>
// <CustomerCountry Name="Customer Country"/>
// <CustomerContactTitle Name="Customer Contact Title"/>
// <CustomerPhoneNumber Name="Customer Phone Number"/>
// <CustomerFaxNumber Name="Customer Fax Number"/>
// <CustomerEmailAddress Name="Customer Email Address"/>
// <CustomerNotes Name="Customer Notes"/>
// <StartDate Name="Start Date">1999-04-04</StartDate>
// <Identifier Name="Identifier">и вот и все</Identifier>
// <Custom1 Name="Custom1">кастом 1</Custom1>
// <Custom2 Name="Custom2">кастом 2</Custom2>
// <Custom3 Name="Custom3">кастом 3</Custom3>
// <Custom4 Name="Custom4">кастом 4</Custom4>
// </Project>
// </Projects>
}
Re[7]: [от модератора]
От: Mimi  
Дата: 20.10.06 12:41
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

Проблема в том, что "много строк проскипано"? Я правильно поняла? Пардон, не знала. В баню не надо, мне бы срочно проблему решить.
Re[7]: [от модератора]
От: Yuri Khomich  
Дата: 20.10.06 12:43
Оценка:
Hello, Blazkowicz!
You wrote on Fri, 20 Oct 2006 12:21:19 GMT:

B>

<много строк поскипано>
YK>> Подозреваю, что если использовать метод POST то все ок?


B> Подобный способ цитирования — верная дорога в баню. Будьте

B> осторожны.

Проблема в оверквотинге (как вам кажется) или в чем-то еще?
Posted via RSDN NNTP Server 2.0
Re[8]: [от модератора]
От: Blazkowicz Россия  
Дата: 20.10.06 12:45
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Проблема в том, что "много строк проскипано"?

Вы Yuri Khomich?

M>Я правильно поняла?

Кто знает...

M>Пардон, не знала.

Так может стоит просветится?
Re[8]: [от модератора]
От: Blazkowicz Россия  
Дата: 20.10.06 12:56
Оценка:
Здравствуйте, Yuri Khomich, Вы писали:

YK>Проблема в оверквотинге (как вам кажется) или в чем-то еще?


Нет, проблема в том что Вам кажется что его нет. На сем рекомендую прекратить публичное обусждение и при желании продолжить в привате.
Re[9]: Unicode && AJAX
От: Yuri Khomich  
Дата: 20.10.06 13:08
Оценка:
Hello, Mimi!
You wrote on Fri, 20 Oct 2006 12:35:55 GMT:

YK>> Давайте код сервлета, который формирует ответ.

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

M> Фильтр есть, но он вроде как в УТФ-8 все и перекодирует.


M>
M> <filter>
M>     <filter-name>Charset Filter</filter-name>
M>     <filter-class>utilities.CharsetFilter</filter-class>
M>     <init-param>
M>       <param-name>requestEncoding</param-name>
M>       <param-value>UTF-8</param-value>
M>     </init-param>
M>   </filter>
M>


Я имел в виду фильтр, который перекодирует ответ, а не запрос.
Для уверенности фильтры временно можно убрать, строки и так в UTF-8.

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


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


Если retXmlBuf это строка, а не какой-нибудь массив байт, то идей больше нет.
Posted via RSDN NNTP Server 2.0
Re[10]: Unicode && AJAX
От: Mimi  
Дата: 20.10.06 13:17
Оценка:
Здравствуйте, Yuri Khomich, Вы писали:

YK>Hello, Mimi!

YK>You wrote on Fri, 20 Oct 2006 12:35:55 GMT:

YK>>> Давайте код сервлета, который формирует ответ.

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

M>> Фильтр есть, но он вроде как в УТФ-8 все и перекодирует.


M>>
M>> <filter>
M>>     <filter-name>Charset Filter</filter-name>
M>>     <filter-class>utilities.CharsetFilter</filter-class>
M>>     <init-param>
M>>       <param-name>requestEncoding</param-name>
M>>       <param-value>UTF-8</param-value>
M>>     </init-param>
M>>   </filter>
M>>


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

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

Нет, такого фильтра нет. Думаете, стоит использовать также и фильтр для перекодировки ответа?
Щас попробую убрать фильтр временно...

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


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


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


retXmlBuf у нас String.
Т.е. если бы это был byte array то возможно это могло стать причиной ошибки?
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[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.. Теряюсь в догадках...
Re[12]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 09:33
Оценка:
Здравствуйте, 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());
Re[13]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 09:39
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Ага, вот:



M>
M>response.setContentType(CONTENT_TYPE);
M>response.setCharacterEncoding(Globals.ENCODING);
M>PrintWriter out = new PrintWriter(response.getWriter());
M>


а точно нигде раньше по коду невызывается response.getWriter()?
Re[7]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 09:39
Оценка:
Здравствуйте, Mimi, Вы писали:

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


а если напрямую отправить такой запрос из браузера, тоже все в порядке?
Re[11]: Unicode && AJAX
От: mag2005  
Дата: 23.10.06 09:59
Оценка:
M>>Девушка, проверьте свой реальный CONTENT_TYPE. Комментарий справа ниже наводит на смутные сомнения (что за UFT-8?)

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


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

А>

А Вы, девушка, не хихикайте. Вы мне ENCODING показали, а интересует CONTENT_TYPE. Вы проверьте все-таки, что там пишется. Должно быть "text/xml; charset=utf-8".
Re[12]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 11:24
Оценка:
Здравствуйте, 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;


нннууу?
Re[14]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 11:26
Оценка:
Здравствуйте, 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() в том сервлете.
Re: Unicode && AJAX
От: Blazkowicz Россия  
Дата: 23.10.06 11:33
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Но каким-то хамским образом, AJAX умудряется наплевать на UTF, и показывает вот такую белиберду РљСѓРєСѓ


Вид — Кодировка а браузере что показывает?
Re[8]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 11:58
Оценка:
Здравствуйте, 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..
Re[9]: Unicode && AJAX
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.10.06 12:14
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Ой.. не-а

M>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..

ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.
Re: Unicode && AJAX
От: Аноним  
Дата: 23.10.06 12:16
Оценка:
Здравствуйте, Mimi, Вы писали:

я извиняюсь, а вдруг....
может в самом XML этого нету?

<?xml version=\"1.0\" encoding=\"UTF-8\" ?>

Re[2]: Unicode && AJAX
От: Yuri Khomich  
Дата: 23.10.06 12:26
Оценка:
Hello, !
You wrote on Mon, 23 Oct 2006 12:16:19 GMT:

А> я извиняюсь, а вдруг....

А> может в самом XML этого нету?

А>

А> <?xml version=\"1.0\" encoding=\"UTF-8\" ?>


UTF-8 является для XML кодировкой по умолчанию.
Posted via RSDN NNTP Server 2.0
Re[2]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 12:40
Оценка:
Здравствуйте, Аноним, Вы писали:

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


А>я извиняюсь, а вдруг....

А>может в самом XML этого нету?

А>

А><?xml version=\"1.0\" encoding=\"UTF-8\" ?>


Нет, оно точно есть
Re[10]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 13:13
Оценка:
Здравствуйте, Lucker, Вы писали:

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


M>>Ой.. не-а

M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..

L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.


Да, видимо это портачит мой PrintWriter, потому как в лог и в файл пишется ок. Буду искать...
Re[10]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 13:31
Оценка:
Здравствуйте, Lucker, Вы писали:

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


M>>Ой.. не-а

M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..

L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.


Блинн.. приколитесь:
В сервлете поменяла (так, эксперимента ради, кодировку на Windows-1252), и все показывается как надо. Хотя, XML мне приходит в мой сервлет в утф-8, как такое может быть?
Re[10]: Unicode && AJAX
От: Mimi  
Дата: 23.10.06 14:17
Оценка:
Здравствуйте, Lucker, Вы писали:

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


M>>Ой.. не-а

M>>Если просто сервлет в браузере запустить (без всего application-а) то XML показывается кривой (т.е. с нечитабельными русскими символами). Хм..

L>ну т.е. понятно куда копать. проверь, что действительно перед твоим сервлетом не стоит фильтров, вызывающих getWriter ответа.


Вот какая штука получилась (фрагменты двух фреймов)
лляляляляя.. ура!
Re[11]: Unicode && AJAX
От: Mycopka Россия http://mhehue.info
Дата: 24.10.06 06:27
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Блинн.. приколитесь:

M>В сервлете поменяла (так, эксперимента ради, кодировку на Windows-1252), и все показывается как надо. Хотя, XML мне приходит в мой сервлет в утф-8, как такое может быть?

Я уже говорил как:

передано куда-то как "Windows-1251", а результат выдан в сервлет, где жестко определено, что это опять же "UTF-8"

Показывается ка надо, потому что сделала обратную перекодировку.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
---
With best regards и все такое :)
Re[11]: Unicode && AJAX
От: Mycopka Россия http://mhehue.info
Дата: 24.10.06 06:36
Оценка:
Здравствуйте, Mimi, Вы писали:

M>Хм... нашла решение вот какое. Перед "отправкой" из сервлета out.print-ом, я добавила


M>
String toOut = new String(xmlBuf.getBytes("Cp1251"), Globals.ENCODING); // который UTF-8

M>И все зашибись...

Не зашибись. Ты так и не нашла причину, кучка перекодировок не выход. Ужасно когда ставят костыли, а все дальнейшие подсистемы строятся уже на основе этого костыля (типа искусственного создания исправляющих друг друга ошибок). И когда кто-то потом найдет эту ошибку, ее исправление может быть очень трудоемким, поскольку на ней уже будет многое завязано.

З.Ы.
M>все, ушла пить пиво
Ранова-то еще
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
---
With best regards и все такое :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.