powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
14 сообщений из 14, страница 1 из 1
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562632
неспал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть эксель-файл. Внутри него указана кодировка
Код: xml
1.
<?xml version="1.0" encoding="utf-8"?>



При чтении файла и выполнении
Код: plsql
1.
xmltype(<файл> , nls_charset_id('UTF8') )


я получаю ошибку
Код: plsql
1.
2.
3.
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00210: expected '<' instead of 'P'


Аналогичная ситуация с кодировкой

Код: plsql
1.
 NLS_CHARSET_ID('CL8KOI8R') и NLS_CHARSET_ID( 'CL8MSWIN1251' ) 



Файл приложила.

Подскажите, пожалуйста, как узнать, какую кодировку ставить?
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562659
ВОМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неспалприложилаdump(substr())
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562684
неспал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВОМ,

спасибо, DUMP вернет кодировку.
Я читаю файл в BLOB, в этом случае не вижу как применить DUMP, ведь чтобы передать информацию в DUMP я должна указать кодировку, для конвертации в CLOB. И дамп покажет ее. К чему применить DUMP?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
declare   
   x   NUMBER;
  p_blob BLOB := empty_blob();
  p_clob CLOB := empty_blob();  
  src_loc BFILE;
  p_pathname varchar2(150):='tt.xlsx';
  tt XMLType;
begin
  src_loc := BFILENAME('INDIR', p_pathname);
   -- Open source binary file from OS
  DBMS_LOB.OPEN(src_loc, DBMS_LOB.LOB_READONLY);
  -- Create temporary LOB object
  DBMS_LOB.CREATETEMPORARY(
        lob_loc => p_blob
      , cache   => true
      , dur     => dbms_lob.session
  );
  -- Open temporary lob
  DBMS_LOB.OPEN(p_blob, DBMS_LOB.LOB_READWRITE);
  -- Load binary file into temporary LOB
  DBMS_LOB.LOADFROMFILE(
        dest_lob => p_blob
      , src_lob  => src_loc
      , amount   => DBMS_LOB.getLength(src_loc));

  --file=UTF-8, select t.value/*='CL8MSWIN1251'*/ from nls_database_parameters t where t.PARAMETER = 'NLS_CHARACTERSET'
  tt:= XMLTYPE( p_blob, nls_charset_id( 'CL8MSWIN1251' ) );  
  dbms_lob.CreateTemporary(p_clob, TRUE, dbms_lob.CALL);

  dbms_lob.convertToClob(
    dest_lob      => p_clob,
    src_blob      => p_blob,
    amount        => dbms_lob.lobmaxsize,
    dest_offset   => p_dest_offset,
    src_offset    => p_src_offset,
    blob_csid     => nls_charset_id('CL8MSWIN1251'),
    lang_context  => p_lang_context,
    warning       => p_warning
    );
    
    select dump( dbms_lob.substr( p_clob, 4000, 1 ),10) into x from dual;
    dbms_output.put_line(x);
end;       
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562687
неспал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в декларации ошиблась:
Код: plsql
1.
p_clob CLOB;
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562694
dbms_lob.read
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неспалК чему применить DUMP?К raw. Но он сам по себе уже dump.
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562699
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут еще такая фишка распространенная на форуме -- следует обращать внимание на ник "серого" комментатора
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562802
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровТут еще такая фишка распространенная на форуме -- следует обращать внимание на ник "серого" комментатора
+1, особенно если это аббревиатура типа "BOM"
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562808
неспал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
CharacterSet=CL8MSWIN1251
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DECLARE
     fil BFILE; 
     pos INTEGER;
     amt BINARY_INTEGER; 
     buf RAW(4000); 
     res VARCHAR2(250);
BEGIN 
  fil := BFILENAME('INDIR', 'tt.xlsx');
     
     dbms_lob.open(fil, dbms_lob.lob_readonly);   
      amt := 40; pos := 1; buf := ''; 
     dbms_lob.read(fil, amt, pos, buf); 
     
     select DUMP(substr(buf,1,40),1016) into res from dual;
     
     dbms_output.put_line(res);

     dbms_lob.close(fil); 
     
END; 



xmltype c этой кодировкой дает ошибку.
Код: plsql
1.
tt:= XMLTYPE( p_blob, nls_charset_id( 'CL8MSWIN1251' ) );



Код: plsql
1.
2.
3.
4.
5.
6.
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00210: expected '<' instead of 'P'
Error at line 1
ORA-06512: at "SYS.XMLTYPE", line 283
ORA-06512: at line 25



Как посмотреть код ? Сконвертировала в CLOB, с nls_charset_id( 'CL8MSWIN1251' ),
Вывела CLOB, кодировка нечитабельная
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  dbms_lob.convertToClob(
    dest_lob      => p_clob,
    src_blob      => p_blob,
    amount        => dbms_lob.lobmaxsize,
    dest_offset   => p_dest_offset,
    src_offset    => p_src_offset,
    blob_csid     => nls_charset_id('CL8MSWIN1251'),
    lang_context  => p_lang_context,
    warning       => p_warning
    );
        
    dbms_output.put_line( dbms_lob.substr( p_clob, 4000, 1 ));
end;    



на клиенте чарсет AMERICAN_AMERICA.CL8MSWIN1251
Код: plsql
1.
select sys_context('userenv', 'LANGUAGE') from dual
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562811
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конвертить следует в кодировку БД.
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562818
неспал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

Спасибо.
там тоже CL8MSWIN1251
Код: plsql
1.
2.
select * from database_properties
where PROPERTY_NAME in ('NLS_CHARACTERSET')
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562821
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чет я не догнал.
Как
неспалЕсть эксель-файл. Внутри него указана кодировка
Код: xml
1.
<?xml version="1.0" encoding="utf-8"?>



сочетается с
неспал
Код: plsql
1.
2.
3.
4.
5.
[src PLSQL]
  dbms_lob.convertToClob(
...
    blob_csid     => nls_charset_id('CL8MSWIN1251'),
...




Какая на самом деле кодировка в файле?
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562832
неспал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,
Запуск этого скрипта возвращает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DECLARE
     fil BFILE; 
     pos INTEGER;
     amt BINARY_INTEGER; 
     buf RAW(4000); 
     res VARCHAR2(250);
BEGIN 
  fil := BFILENAME('INDIR', 'tt.xlsx');
     
     dbms_lob.open(fil, dbms_lob.lob_readonly);   
      amt := 40; pos := 1; buf := ''; 
     dbms_lob.read(fil, amt, pos, buf); 
     
     select DUMP(substr(buf,1,40),1016) into res from dual;
     
     dbms_output.put_line(res);

     dbms_lob.close(fil); 
     
END;


возвращает
Код: plsql
1.
Typ=1 Len=40 CharacterSet=CL8MSWIN1251: 35,30,34,42,30,33,30,34,31,34,30,30,30,36,30,30,30,38,30,30,30,30,30,30,32,31,30,30,36,32,45,45,39,44,36,38,35,45,30,31


если взять с сервера файл tt.xlsx, разархивировать его и открыть [Content_Types].xml,
в первой строке получу
Код: plsql
1.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562918
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неспалесли взять с сервера файл tt.xlsx, разархивировать его и открыть [Content_Types].xml,


Тудыть его в качель...
...
Рейтинг: 0 / 0
xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
    #39562927
andrey_anonymousТудыть его в качель...Ну значит серый ВОМ не угадал.
неспал35,30,34,42,30,33,30,34,31,34,30,30,30,36,30,30,30,38,30,30,30,30,30,30,32,31,30,30,36,32,45,45,39,44,36,38,35,45,30,31
Ну ты не охренело ли хекс в хекс перегонять.
50 4B 03 04 00 ... - Это у тебя заголовок архива.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / xmltype(xlsx,nls_charset_id('UTF8')) ошибка LPX-00210
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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