如何使用MySQL生成不同编码的字符?
我正在尝试使用MySQL生成不同编码的字符 我的脚本如下所示:如何使用MySQL生成不同编码的字符?,mysql,unicode,encoding,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)) 我的预期结果是: 67
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
结果:
45678
뉮
뉮
뉮
0000B26E
B26E
EB89AE
尝试
转换(字符(678使用UTF16)使用UTF8)
。调用CHAR()
会将unicode字符代码转换为实际字符串,而convert()
会将该字符串转换为实际UTF8。UTF-8中的字节序列0x02A6
(十进制678)是;第一个字节解码为,但第二个字节没有解码。我的问题是:在MySQL中有办法做到这一点吗?@eisberg:有办法做到什么?将该字节序列转换为UTF-8是毫无意义的。我想将任何整数转换为UTF-32、UTF-16、UTF-8等格式中的等效字符。@eisberg:但无法将任何整数转换为UTF-8。并非所有字节序列/整数都是有效的UTF-8编码。我知道您的目标是什么,但以大多数其他方式(如PHP中的mb_*-函数)进行转换将返回空字符串或其他线索,表明此特定字符无法转换。Oops,应使用而不是逗号进行。只有转换为UTF8需要CONVERT()
部分;正如您自己所看到的,CHAR()
足以生成UTF16和UTF32。请尝试@id=66600,它会给出不同的结果。奇怪:-TAh,是的,CONVERT()
仍然需要代理项对。您从哪里获得此信息的?听起来很有趣。在这个例子中,维基百科。如果它不在wiki页面中,它至少会有指向那里实际标准的链接。
45678
뉮
뉮
뉮
0000B26E
B26E
EB89AE