如何在纯MySQL中将json_encode生成的UTF8十六进制实体转回原字符?
纯MySQL转换JSON Unicode实体为中文的方案
当然没问题!完全可以只靠MySQL内置函数把存储的"\u4e2d"这类JSON Unicode实体字符串转成对应的中文,不需要借助PHP。
核心解法:使用JSON_UNQUOTE()函数
MySQL的JSON_UNQUOTE()函数的作用不只是去除JSON字符串的引号,它还会自动解析字符串里的Unicode转义序列(也就是\uXXXX格式的十六进制实体)。
举个实际的使用例子:
假设你有一张表test_table,其中unicode_str字段存储了"\u4e2d",执行下面的查询就能直接得到中文“中”:
SELECT JSON_UNQUOTE(unicode_str) AS converted_char FROM test_table;
如果只是想快速测试这个功能,可以直接传入字符串常量:
SELECT JSON_UNQUOTE('"\u4e2d"'); -- 执行后会返回 "中"
注意事项
- 这个方法要求你的MySQL版本在5.7及以上,因为
JSON_UNQUOTE()是从5.7版本开始引入的JSON函数族成员。 - 确保你的数据库连接、表字段的字符集设置为
utf8mb4(或者兼容的UTF-8字符集),这样转换后的中文才能正常显示,避免出现乱码问题。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

