如何使用MySQL生成不同编码的字符?

时间:2012-05-30 12:27:34

标签: mysql unicode encoding

我正在尝试使用MySQL生成不同编码的字符。

我的脚本如下所示:

SET @id := 678;
SELECT
    @id,
    CHAR(@id USING utf32),
    CHAR(@id USING utf16),
    CHAR(@id USING utf8),
    HEX(CHAR(@id USING utf32)),
    HEX(CHAR(@id USING utf16)),
    HEX(CHAR(@id USING utf8))

我的预期结果是:

678
ʦ
ʦ
ʦ
000002A6
02A6
CAA6

我真正得到的是:

678
ʦ
ʦ
            <-- Questionable
000002A6
02A6
02          <-- Questionable

有没有办法在MySQL中执行此操作?

的answere

感谢lanzz

SET @id = 45678;
SELECT
    @id,
    CHAR(@id USING utf32),
    CONVERT(CHAR(@id USING utf32) USING utf16),
    CONVERT(CHAR(@id USING utf32) USING utf8),
    HEX(CHAR(@id USING utf32)),
    HEX(CONVERT(CHAR(@id USING utf32) USING utf16)),
    HEX(CONVERT(CHAR(@id USING utf32) USING utf8));

结果:

45678
뉮
뉮
뉮
0000B26E
B26E
EB89AE

2 个答案:

答案 0 :(得分:1)

试试CONVERT(CHAR(678 USING UTF16) USING UTF8)CHAR()调用会将您的unicode字符代码转换为实际字符串,CONVERT()会将该字符串转换为实际的UTF8。

答案 1 :(得分:0)

UTF-8中的字节序列0x02A6(十进制678)为invalid;第一个字节解码为U+0002,但第二个字节没有解码。