我目前有一個 ORACLE 表,其中一列包含明顯損壞的字串,如下所示Pachtvertrag ??ber eine Gastst?¤tte:
在某些時候,可能對字串使用了錯誤的編碼。即使字串已經像這樣損壞,有沒有辦法修復這樣的字串中的“錯誤”編碼?
我嘗試了以下方法:
SELECT CONVERT('Pachtvertrag ??ber eine Gastst?¤tte', 'UTF8', 'US7ASCII') FROM DUAL;
但這會導致:Pachtvertrag ????ber eine Gastst????tte,而實際上應該是Pachtvertrag über eine Gastst?tte。
我的另一個想法是先以某種方式將字串轉換為位元組(例如通過使用TO_SINGLE_BYTE),但這也沒有導致預期的結果。
uj5u.com熱心網友回復:
字符集US7ASCII不支持特殊字符,必須翻轉字符集。
所以,更正宣告必須像
CONVERT('Pachtvertrag ??ber eine Gastst?¤tte', 'WE8ISO8859P1', 'AL32UTF8')
請注意,ISO-8859-1、ISO-8859-15 和 Windows-CP1252 ( WE8MSWIN1252) 非常相似。請參閱ISO 8859-15 vs. -1 vs. Windows-1252 vs. Unicode并選擇正確的編碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448750.html
