XSLT на PLSQL - проблема с кодировками
The parser currently supports the following encodings: UTF-8, BIG 5, US-ASCII,
GB2312, EUC-JP, ISO-2022-JP, EUC-KR, ISO-2022-KR, KOI8-R, ISO-8859-1to -9, EBCDIC-CP-*, and Shift_JIS. UTF-8 is the default encoding if none is specified. Any other ASCII or EBCDIC based encodings that are supported by the Oracle 8i database may be used.
А если перевести исходный документ в utf-8 - работает?
А как перекодировать из Windows-1251 в UTF-8 на PL/SQL? У меня ж все данные из базы, в кодировке Windows-1251
<xsl:output method="xml" encoding="WINDOWS-1251"/>
Это к чему? encoding у меня указан уже.
Невнимательно прочитал и сказал чушь
java -cp xmlparserv2.jar oracle.xml.parser.v2.oraxsl test.xml ident.xsl text2.xml
Код у меня такой:
FUNCTION PROCESS (sourceCLOB CLOB, stylesheetCLOB CLOB) RETURN CLOB IS
parser XMLPARSER.Parser := XMLPARSER.newParser;
processor XSLPROCESSOR.Processor := XSLPROCESSOR.newProcessor;
sourceXML XMLDOM.DOMDocument;
stylesheetXML XMLDOM.DOMDocument;
stylesheet XSLPROCESSOR.Stylesheet;
result CLOB;
BEGIN
IF sourceCLOB IS NULL OR stylesheetCLOB IS NULL THEN
RETURN NULL;
END IF;
XMLPARSER.parseCLOB(parser, sourceCLOB);
sourceXML := XMLPARSER.getDocument(parser);
XMLPARSER.parseCLOB(parser, stylesheetCLOB);
stylesheetXML := XMLPARSER.getDocument(parser);
stylesheet := XSLPROCESSOR.newStylesheet(stylesheetXML, NULL);
dbms_lob.createtemporary(result, true) ;
XSLPROCESSOR.processXSL(processor, stylesheet, sourceXML, result);
XSLPROCESSOR.freeProcessor(processor);
XMLPARSER.freeParser(parser);
XMLDOM.freeDocument(sourceXML);
XMLDOM.freeDocument(stylesheetXML);
RETURN result;
EXCEPTION
WHEN OTHERS THEN
XSLPROCESSOR.freeProcessor(processor);
XMLPARSER.freeParser(parser);
XMLDOM.freeDocument(sourceXML);
XMLDOM.freeDocument(stylesheetXML);
RAISE;
END;
подозреваю, что Оракл не понимает строку "Windows-1251"
Зато работает такой вариант: перекодирую из Windows-1251 в ISO-8859-5, потом делаю XSLT.
Оставить комментарий
ava3443
Делаю преобразование XSLT на PLSQL в восьмом оракле. Исходный XML строится "руками" из базы, все данные в кодировке Windows-1251 (и это указано в заголовке исходного XML). После нехитрого преобразованиякоторое, по идее, должно выдать исходный XML, всё, что было по-русски, становится нечитаемым.
Например, "Транспортировка газа по трубопроводам" превращается в
Как с этим бороться?