[英]Convert function not working with CLOB datatype
我們有一些lob和varchar2類型的數據,它們被錯誤地編碼為AL32UTF8,我們需要將其編碼轉換為we8mswin1252字符集。 我有用於字符集轉換的轉換函數,該函數在varchar2數據類型上正常工作,但與CLOB一起使用時會產生一些模糊字符。 我當前的編碼是AL32UTF8。
select value,CONVERT(value,'we8mswin1252','AL32UTF8'),CONVERT(to_clob(value),'we8mswin1252','AL32UTF8') from temp;
數據庫:Oracle 12c
select * from nls_database_parameters where parameter like '%CHARACTERSET%';
我從Oracle那里得到的答案:“ CONVERT函數是一個遺留函數,不應用於任何與應用程序相關的字符集轉換。CLOB尤其棘手,因為它在多字節數據庫(例如AL32UTF8)中使用了特殊的存儲編碼。CONVERT非常有用僅用於某些修復任務。在數據庫數據庫字符集以外的字符集中處理數據的支持方式是使用RAW數據類型和程序包UTL_I18N中的轉換過程。但是,UTL_I18N不支持CLOB。要讀取32K塊的CLOB,請使用UTL_I18N.STRING_TO_RAW將其轉換為WE8MSWIN1252,進行后期處理並使用UTL_FILE.PUT_RAW寫入文件。
我還得到了另一個unix命令iconv來轉換文件編碼,所以基本上我是將db輸出寫入文件,因此轉換了它的編碼並傳輸了數據。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.