簡體   English   中英

轉換功能不適用於CLOB數據類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM