Oracle xml_dom.writeToClob返回错误的字符集

时间:2013-01-09 13:01:37

标签: xml oracle encoding

我正在尝试将XML转换为CLOB并将其保存在表中。 DB的版本是Oracle 9.2.0.8。 这就是我创建XML的方式。

DECLARE    
    p               dbms_xmlparser.parser;
    xml_doc         dbms_xmldom.domdocument;
BEGIN

    p := dbms_xmlparser.newParser;
    dbms_xmlparser..parseBuffer(p, '<?xml version="1.0" encoding="'||codepage||'"?><elm/>');
    d := dbms_xmlparser.getDocument(p);
    ...
END;

但是在将XML转换为CLOB后,cyrilic字符在变量v_xml_clob中变得不可读:

v_xml_clob    clob;
DBMS_LOB.createtemporary (v_xml_clob, TRUE);
dbms_xmldom.writeToClob(xml_doc , v_xml_clob);

但是当我将XML写入文件时,一切正常:dbms_xmldom.writeToFile(xml_doc , PATH); 这是错误的文本示例:

Сберегательные депозиты резидентов - национальная валюта
is becoming
бсх№хурђхыќэћх фхяючшђћ №хчшфхэђют - эрішюэрыќэрџ трыўђр

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

解决这个问题:

v_xml_clob := convert(v_xml_clob,'CL8ISO8859P5','CL8MSWIN1251');