【发布时间】:2012-05-30 12:27:33
【问题描述】:
我正在尝试使用 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 中做到这一点?
回答
感谢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
【问题讨论】:
-
只有转成UTF8需要
CONVERT()部分;如您所见,CHAR()足以生成 UTF16 和 UTF32。 -
尝试@id = 66600,它会给出不同的结果。奇怪:-T
-
啊,是的,代理对仍然需要
CONVERT()。 -
您从哪里获得这些信息?听起来很有趣。
-
在这种情况下,维基百科。如果它不在 wiki 页面中,它至少会有指向那里实际标准的链接。