在php中,json_encode()将UTF8编码为十六进制实体,例如。

json_encode('中'); // become "\u4e2d"

假设数据“\u4e2d”现在存储在MySQL中,不使用PHP就可以从"\u4e2d"转换回吗,只是普通的MySQL?

最佳答案

在我的配置中,选择hex('zhong');返回E4B8AD
它是UTF8字节的十六进制代码。自然地
与代码点4e2d的十六进制不同,但是可以得到
使用select hex(cast('zhong'作为char(1)字符集utf16));。
更新:发问者已经编辑了这个问题,在我看来这是一个完全不同的问题,现在显然是:当4e2d是代码点并且默认字符集是utf8时,如何获得包含“\u4e2d”的字符串的“中位”。好吧,就是这样
选择cast(char(conv(right('\u4e2d',4),16,10)using utf16)作为char(1)字符集utf8);

08-05 15:35