2013-02-12 71 views
0

我正在使用CHAR(code_point USING ucs2)將unicode代碼點轉換爲utf-8字符,但它在0x00ff代碼點之上給了我意想不到的結果。它爲我提供了代碼點0x0100至0x01FF的字符Â(代碼點0x0100),以及代碼點0x0200至0x02FF的字符Ȁ(代碼點0x0200),依此類推。Mysql將unicode代碼點轉換爲utf-8字符

所以,如果我執行這個查詢:

SET NAMES utf8; 
SELECT CHAR(0x0100 USING ucs2),CHAR(0x0101 USING ucs2),CHAR(0x0200 USING ucs2),CHAR(0x0201 USING ucs2); 

,它給我的結果:

| Â| Â| Ȁ| Ȁ|

而預期的結果是:

| Â| ā| Ȁ| ȁ|

請幫我理解問題,或者提出另一種方法來做到這一點。

在此先感謝..

+0

確切地說,我寫了一個用戶定義的函數,我必須將SMALLINT轉換爲字符,SMALLINT是代碼點。 – Adee 2013-02-12 12:11:13

回答

1

我把它做的工作這

CONVERT(CHAR(code_point) USING ucs2); 

我有混合使用UTF8字符,所以我必須進一步轉換成UTF8

CONVERT(CONVERT(CHAR(code_point) USING ucs2) USING utf8); 
相關問題