2013-02-12 124 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); 
相关问题