我使用CHAR(code_point USING ucs2)将unicode代码点转换为utf-8字符,但它在0x00ff代码点之上给出了意想不到的结果。它给出了代码点0x0100到0x01FF的字符Â(代码点0x0100)和代码点0x0200到0x02FF的字符Ȁ(代码点0x0200),依此类推。
所以如果我执行这个查询:
SET NAMES utf8;
SELECT CHAR(0x0100 USING ucs2),CHAR(0x0101 USING ucs2),CHAR(0x0200 USING ucs2),CHAR(0x0201 USING ucs2);
,它给了我结果:
| Â| Â| Ȁ| Ȁ|
而预期的结果是:
| Â| ā| Ȁ| ȁ|
请帮助我理解这个问题,或建议另一种方法。
提前致谢..
答案 0 :(得分:1)
我这样做了
CONVERT(CHAR(code_point) USING ucs2);
我必须将字符与utf8混合,所以我必须进一步转换为utf8
CONVERT(CONVERT(CHAR(code_point) USING ucs2) USING utf8);