powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
15 сообщений из 15, страница 1 из 1
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38074825
arusnak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Необходимо парсить xml содержащий Unicode символы.
В Oracle 10.2.0.5.0 и 11.2.0.1 работает, а в 11.2.0.3 не работает. Возникает ошибка LPX-00217: недопустимый символ.

Вот запрос для примера:
set define off
select xmltype.createxml('<xml>руб</xml>') from dual
/

Подскажите, пожалуйста, это баг? Как можно обойти данную проблему? Может какие-нибудь настройки надо сделать? Или патч установить?
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38074840
arusnak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, вот запрос для тестов
Код: plsql
1.
2.
3.
set define off
select xmltype.createxml('<xml>&#x440;&#x443;&#x431;</xml>') from dual
/

:
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38074843
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arusnak,

бд работает в кодировке бд. если кодировка символов отличается, то используй бинарные данные или универсальную национальную кодировку
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38075173
arusnak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял про кодировку. Кодировка всех 3-х баз CL8MSWIN1251.
Только для версии 11.2.0.3 парсер не может правильно обработать Unicode символы и выдает ошибку.

Вот например здесь http://oraclespot.wordpress.com/2012/01/27/bug11877267/ утверждается, что для версии 11.2.0.2 парсер поменяли и что это может быть баг. Такие же заявления видел еще в нескольких местах.

Даже если это баг, что делать с Uicode символами? Может их как-то можно все найти и преобразовать перед парсингом?
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38076101
arusnak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил еще на одной базе 11.2.0.3.0 у которой кодировка AL32UTF8. Парсинг с xml с юникодом работает!

Поэтому выход такой: преобразуем clob xml в blob и создаем xmltype следующим образом
Код: plsql
1.
v_xml_type := xmltype(l_blob, nls_charset_id('UTF8'));



т.е всегда кодировка все должна быть 'UTF8'

тема закрыта
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38264920
a.l.e.x.a.n.d.r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
arusnak,

а вот такое не тоже самое?

select XMLType(BFileName(F.File_DIR,f.full_file_name),NLS_CharSet_ID ('UTF8')) into loFile from dual;
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38566562
karlov69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Та же проблема.
Когда делаю
select XMLType(BFileName('XMLXSD','filename.xsd'),NLS_CharSet_ID('UTF8')) from dual;
получаю ошибку
:
LPX-00217: invalid character 55013(U+D6E5)

символа D6E5 в файле нет.
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38566596
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karlov69символа D6E5 в файле нет.Есть - это 'Це' в кодировке 1251. В отличие от однобайтовой кодировки, в utf-8 не все последователности байтов допустимы.
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #38566642
karlov69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

А как сделать, чтоб не ругалось?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #39012568
Фотография Pastic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая же проблема:
ORA-31011: XML parsing failed
ORA-19202: Error occured in XML processing
In line 1 of stream:
LPX-00217: Invalid character 16 (U+0010)

при выполнении запроса

Код: plsql
1.
2.
3.
4.
create table as
select any_path DBMS_XDB.GETCONTENTXMLTYPE(any_path) xml
from XDB.Resource_view t
where instr(any_path, '/images_201307051406')>0



СУБД Oracle 11.2.0.3 Standart Edition.

Выполнил
Код: plsql
1.
alter system set event=’31156 trace name context forever, level 0x400&#8242; scope=spfile;

, как советовали тут - не помогло.
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #39012579
ArtNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pastic,
вероятно 15592169 , для более точной диагностики надо данные смотреть
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #39012593
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtNickвероятно 15592169 , для более точной диагностики надо данные смотретьсудя по части имени пути к файлу, там не только xml в кодировке бд, а скорее совсем наоборот.
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #39013218
Фотография Pastic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtNickPastic,
вероятно 15592169 , для более точной диагностики надо данные смотреть

Как бы их ещё посмотреть?
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #39013333
Фотография Pastic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так сработало без ошибок:
Код: plsql
1.
2.
3.
4.
create table tt_xml as
select any_path, DBMS_XDB.GETCONTENTXMLTYPE(any_path).getclobval() xml
from XDB.Resource_view t
where instr(any_path, '/images_201307051406')>0
...
Рейтинг: 0 / 0
Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
    #39262690
kaldorey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Немного реанимирую топик.
Есть файлы xml
Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0" encoding="windows-1251" ?>
 <elements>
  <elem>...</elem>
  <elem>...</elem>
 </elements>


Есть база в al32utf8.
Каждый день идет загрузка файлов loadclobfromfile -> xmldom, парсинг каждого elem в clob и по определенному условию сохраняется в таблице как xmltype.
И так вполне успешно гигабайты файлов прокручивает день за днем. Но примерно раз в месяц возникает
Код: plsql
1.
2.
3.
4.
ORA-64464: XML event error
ORA-19202: Error occurred in XML processing
In line 171 of orastream:
LPX-00217: invalid character 159 (U+009F)


Символы могут быть разные.
Аналогичный результат получается и в случае, когда проблема локализована и помещена в отдельный файл
Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251" ?>
 <elements>
  <elem>...</elem>
 </elements>


таким способом
Код: plsql
1.
2.
select xmltype(bfilename(v_dir, v_filename), nls_charset_id('CLMSWIN1251')) asd
from dual


А вот если таким способом грузить исходный xml - то все ок.
Проблема решается быстро, когда в hex редакторе найдешь где проблема и, если это в незначащей области xml, поставишь пробел.
Но если в значащей области, уже сложнее. Сейчас пока решил, если получаю такой exception, в clob, содержащий elem, над которым выполняется xmltype(), добавляю
Код: xml
1.
<?xml version="1.0" encoding="utf-8" ?>


Если добавлять изначально, то проблема возникала примерно с такой же частотой, но у файлов, которые без этого куска обрабатывались.
Это помогает, но кажется, способ тот еще костыль, возможно, теперь раз в год может проблема возникать, может вообще больше не возникнет, но гарантии нет. Есть конечно вариант выкинуть xmldom, clob и сразу работать с xmltype, но переделывать придется очень много, и также гарантии нет, что не свалится.
Помогите добраться до сути.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Unicode символы, ошибка при обработке XML LPX-00217: недопустимый символ 1088 (U+0440)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]