Как раз после "?" идут наши данные. И не понятно, что делать. Почему xml-парсер браузера не справляется со строкой.
Или я что-то не так делаю... (HTTP-сервер рукотворный, с любыми другими АЯКС-запросами справляется)...
Может надо чарсет ещё и в самом HTTP ответе указывать?
Здравствуйте, consumer, Вы писали:
C>Надо передать двоичные данные из HTTP сервера (по ajax запросу). C>Начальство требует UTF-8.
C>Как раз после "?" идут наши данные. И не понятно, что делать. Почему xml-парсер браузера не справляется со строкой. C>Или я что-то не так делаю... (HTTP-сервер рукотворный, с любыми другими АЯКС-запросами справляется)... C>Может надо чарсет ещё и в самом HTTP ответе указывать?
потому что надо делать urlencode, ибо строка запроса — это ascii. Разные кодировки можно использовать только внутри контента (т.е. даже в хидере нельзя).
consumer wrote:
> Ну я так понял эти двоичные данные возвращаем как xml'ник вида:
Не надо генерировать xml как текстовый файл, для этого есть DOM/SAX и прочее.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, consumer, Вы писали:
C>Надо передать двоичные данные из HTTP сервера (по ajax запросу). C>Начальство требует UTF-8.
C>делаю я это так (bytebuf — byte[] — наши двоичные данные):
C>String Result = "строка служебных данных"+new String(bytebuf, "UTF-8");
а разве ваши двоичные данные — это уже строка в кодировке utf-8?
и вообще, писать что угодно в xml напрямую нельзя, там же могут попасться символы < или &, которые всю xml-ную малину портят
нужно паковать либо через cdata, что укладывается в стандарты xml, либо рассмотривать вариант, скажем, с base64-кодированием данных
C>Или я что-то не так делаю... (HTTP-сервер рукотворный, с любыми другими АЯКС-запросами справляется)...
с любыми ли?
Re: возврат XML UTF-8
От:
Аноним
Дата:
18.05.07 07:48
Оценка:
Здравствуйте, consumer, Вы писали:
C>Надо передать двоичные данные из HTTP сервера (по ajax запросу). C>Начальство требует UTF-8.
C>Ну я так понял эти двоичные данные возвращаем как xml'ник вида:
C><?xml version="1.0" encoding="UTF-8"?>
C><GetAllData>
C>....наши данные строкой UTF-8...
C><GetAllData>
C>
Если передаешь XML в кодировке UTF-8, то нужно (в сервлете) добавить что-то типа
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, consumer, Вы писали:
C>>Надо передать двоичные данные из HTTP сервера (по ajax запросу). C>>Начальство требует UTF-8.
А>Если передаешь XML в кодировке UTF-8, то нужно (в сервлете) добавить что-то типа
А>
А>Но вообще-то просто бинарные данные в XML файл писать нельзя (мне так кажется) из-за наличия спец символов (о чем уже писали).
да, пожалуй в text/plain нужно возвращать. в BASE64 не могу, потому как требование utf8 (видимо чтобы англиский текст читался...)
Только у меня не сервлет а рукотворный HTTP-сервер. Если не трудно как выглядит этот самый CharacterEncoding в ХТТП-ответе?
Я добавил поле
"Content-Encoding: utf-8";
И изменил:
"Content-type: text/plain charset=utf-8";
CharacterEncoding ещё где-то определяется?...
В общем, теперь ответ нормальный приходит, вместо непечатаемых символов квадратики. Теперь чтобы получить из этой utf-8 строки исходные двоичные данные, нужно в яваскрипте её раскодировать...
На всякий случай спрошу.
1.на сервере: str = new String(bytebuf, "UTF-8");
2.в яваскрипте клента приходит эта utf-8-строка
3.как поучить исходные двоичные данные?