2013-01-09 70 views
0

我想將XML轉換爲CLOB並將其保存在表中。 DB的版本是Oracle 9.2.0.8。 這就是我創建XML的方式。Oracle xml_dom.writeToClob返回錯誤的字符集

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

原始字節在Windows-1251編碼,但結果他們被視爲ISO-8859-5。這有幫助嗎?你可以在你的代碼的某個地方查看,你沒有顯示它們。 – Esailija

+0

謝謝你的幫助。解決了它 – Daler

回答

0

解決這樣說:

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