2017-09-19 298 views
0

服務器爲Unicode:使用unixODBC的如何轉換字符集DB2查詢

我用在與數據的列DB2數據庫中的表的Linux:IBM i系列AS/400上運行DB2

客戶端CCSID 836(簡體中文EBCDIC)。我想用UTF-16獲得結果,以便在其他系統上工作,但我很難找到正確的轉換方式。

當我嘗試:

SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 13491) FROM MY.TABLE 

我得到的錯誤:

SQL State: 22522 
Vendor Code: -189 
Message: [SQL0189] Coded Character Set Identifier 13491 not valid. Cause . . . . . : Coded Character Set Identifier (CCSID) 13491 is not valid for one of the following reasons: -- The CCSID is not EBCDIC. -- The CCSID is not supported by the system. -- The CCSID is not vaid for the data type. -- If the CCSID is specified for graphic data, then the CCSID must be a DBCS CCSID. -- If the CCSID is specified for UCS-2 or UTF-16 data, then the CCSID must be a UCS-2 or UTF-16 CCSID. -- If the CCSID is specified for XML data, then the CCSID must be SBCS or Unicode. It must not be DBCS or 65545. 

如何從CCSID 836的數據轉換爲UTF-16?我同樣不成功UNICODE_STR()

+0

請編輯您的問題,說明在Linux上安裝了哪個DB2客戶端名稱和版本/ fixpack以及linux發行版名稱和發行版。還請指定在Linux上安裝了哪些語言環境(輸出爲「locale -a」),哪個是unixodbc($ LANG的值)有效的語言環境。 – mao

回答

0

我無法解釋爲什麼,但這裏是什麼工作:

SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 935) FROM MY.TABLE 

有問題的列中的本地CCSID是836,這似乎非常相似,935,所以我不理解的差異。但935爲我工作。