Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 русский язык в xml?  [new]
Weed
Member

Откуда:
Сообщений: 624
select
xmlelement(name foo,
xmlattributes('скобки <> english русский текст"' as bar)
);

возвращает:
"<foo bar="скобки <> english русский текст""/>"

как бы ей сказать что у меня везде UTF-8 и можно выдавать русский язык прямо как он есть, без оверхеда?
16 июл 10, 23:22    [9119124]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Weed
Member

Откуда:
Сообщений: 624
хаха, форум пропарсил ввод как если бы это был html :)

приложил картинкой вывод как он есть

К сообщению приложен файл. Размер - 0Kb
16 июл 10, 23:26    [9119136]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Ёш
Member

Откуда:
Сообщений: 2892
Weed
как бы ей сказать что у меня везде UTF-8 и можно выдавать русский язык прямо как он есть, без оверхеда?
Никак, текущая реализация PG и libxml2 иногда друг друга не совсем понимают :-\
17 июл 10, 01:16    [9119387]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Weed
Member

Откуда:
Сообщений: 624
Ёш,

а какова природа этого бага? (о нём, кстати, репортили?)

очень обидная проблема - такой классный способ генерировать сайты вообще без написания кода обламывается!..
17 июл 10, 11:10    [9119641]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Big Andy
Member

Откуда:
Сообщений: 425
Weed,

Почему обламывается? То, что браузер его (полученный код) правильно интерпретировал, говорит как раз о другом.

Потом можно переписать libxml :D
17 июл 10, 11:20    [9119650]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Ёш
Member

Откуда:
Сообщений: 2892
Weed
а какова природа этого бага?
Если взять вот этот вот пример: http://www.xmlsoft.org/examples/testWriter.c можно заметить что перед тем как писать атрибут в выходной поток с помощью xmlTextWriterWriteAttribute сначала устанавливается кодировка выходного потока через xmlTextWriterStartDocument(writer, NULL, MY_ENCODING, NULL) postgres этого не делает.

И libxml2 почему-то считает что хотя кодировка по умолчанию UTF8 ей нужно экранировать все значения атрибута не попадающие в latin1 если не указана кодировка выходного документа, не знаю почему... Это можно проверить если закоментировать xmlTextWriterStartDocument в примере, получится такой же вывод как и у Вас. Всё это вместе накладывается и приводит к такому результату.

Но просто вызывать что-то типа xmlTextWriterStartDocument(writer, NULL, pg_server_encoding(), NULL) перед xmlTextWriterWriteAttribute — мало, потому что после xmlTextWriterStartDocument выходной поток станет полным документом, с заголовком <?xml version="1.0" encoding="КОДИРОВКА"?> который postgres'у совершено не нужен, его нужно будет вырезать из результата перед возвращением из xmlattributes.
Weed
(о нём, кстати, репортили?)
Я писал об этом в pgsql-hackers но не в виде бага, просто как замечание, на исправлении не настаивал :) Лучше напишите pgsql-bugs.
17 июл 10, 15:24    [9119992]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Weed
Member

Откуда:
Сообщений: 624
Big Andy
Weed,

Почему обламывается? То, что браузер его (полученный код) правильно интерпретировал, говорит как раз о другом.


говорит о том что на форуме не испольузется xml при возврате постов и вообще не парсится юзерский пост при выдаче на предмет этих символов :)
18 июл 10, 13:14    [9121345]     Ответить | Цитировать Сообщить модератору
 Re: русский язык в xml?  [new]
Weed
Member

Откуда:
Сообщений: 624
Ёш
Weed
а какова природа этого бага?
Если взять вот этот вот пример: http://www.xmlsoft.org/examples/testWriter.c можно заметить что перед тем как писать атрибут в выходной поток с помощью xmlTextWriterWriteAttribute сначала устанавливается кодировка выходного потока через xmlTextWriterStartDocument(writer, NULL, MY_ENCODING, NULL) postgres этого не делает.

И libxml2 почему-то считает что хотя кодировка по умолчанию UTF8 ей нужно экранировать все значения атрибута не попадающие в latin1 если не указана кодировка выходного документа, не знаю почему... Это можно проверить если закоментировать xmlTextWriterStartDocument в примере, получится такой же вывод как и у Вас. Всё это вместе накладывается и приводит к такому результату.

Но просто вызывать что-то типа xmlTextWriterStartDocument(writer, NULL, pg_server_encoding(), NULL) перед xmlTextWriterWriteAttribute — мало, потому что после xmlTextWriterStartDocument выходной поток станет полным документом, с заголовком <?xml version="1.0" encoding="КОДИРОВКА"?> который postgres'у совершено не нужен, его нужно будет вырезать из результата перед возвращением из xmlattributes.
Weed
(о нём, кстати, репортили?)
Я писал об этом в pgsql-hackers но не в виде бага, просто как замечание, на исправлении не настаивал :) Лучше напишите pgsql-bugs.


но и кодировку выходного документа указывать не ясно как

в принципе баг не мешает но текстовый трафик рискует увеличиться на треть или даже на половину что неприятно

багрепорт напишу наверно как жара спадёт :)
18 июл 10, 13:16    [9121352]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: русский язык в xml?  [new]
igorbasic
Member

Откуда:
Сообщений: 8
Weed
багрепорт напишу наверно как жара спадёт :)

Написали? До сих пор мучаемся с этим багом...
30 май 17, 12:40    [20522928]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить