在 Oracle 12.1 中,以下查詢...
select convert(N'è','US7ASCII','EE8MSWIN1250') from dual;
回傳“c”。我希望有一個“e”。
為什么是這樣?我不精通字符集問題。
uj5u.com熱心網友回復:
N'è'在 UTF-16 中是 0x00E8,因此這些位元組是您對 CONVERT 函式的原始輸入。源字符集是 EE8MSWIN1250,因此 Oracle 假定您希望在該代碼頁中使用 0xE8。
在EE8MSWIN1250 代碼頁中,0xE8 映射到 ?;如果將其轉換為 ASCII,則最接近的匹配項是“c”。
與您的其他示例類似 - ? = 0xEF,這是 EE8MSWIN1250 中的 ?。
老實說,我很驚訝這些回傳了任何東西 - 我嘗試使用 CONVERT 進行的大量字符集轉換根本不起作用。
uj5u.com熱心網友回復:
我不知道為什么。但是,檔案說
為了字符轉換的完整對應,目標字符集必須包含源字符集中定義的所有字符的表示。如果目標字符集中不存在字符,則會出現替換字符
SQL> select convert(N'è','US7ASCII','EE8MSWIN1250') from dual;
---- -------- ------------
C char destination source charset
-
c
顯然,US7ASCII 不包含 EE8MSWIN1250 字符集中的所有字符;可以?'è' 的替換字符(當涉及這兩個字符集時)似乎是c,所以這就是你得到的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373089.html
上一篇:OracleSQL列比較
