0

我正在尝试使用 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 中做到这一点?

回答者

谢谢兰兹。_

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
4

2 回答 2

1

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

于 2012-05-30T12:39:03.273 回答
0

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

于 2012-05-30T12:43:23.410 回答