【问题标题】:Oracle xml_dom.writeToClob returning wrong character setOracle xml_dom.writeToClob 返回错误的字符集
【发布时间】:2013-01-09 13:01:36
【问题描述】:

我正在尝试将 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 后,变量 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
бсх№хурђхыќэћх фхяючшђћ №хчшфхэђют - эрішюэрыќэрџ трыўђр

请帮我解决这个问题。

【问题讨论】:

  • 原始字节在 Windows-1251 中编码,但在结果中它们被视为 ISO-8859-5。这有帮助吗?您可以在代码中的某处查找它们,但您没有显示它们。
  • 感谢您的帮助。解决了

标签: xml oracle encoding


【解决方案1】:

这样解决了:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 2017-09-24
    • 2013-03-21
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多