目前我有类似\u4eac\u90fd
的内容,我希望将其转换为UTF-8,以便将其插入数据库。
答案 0 :(得分:2)
最有可能的是,\ u转义序列已由Web浏览器发送。这将是您问题的原始来源 - 您需要让Web浏览器停止这样做。
为此,您需要确保浏览器知道在提交表单时要使用的编码。默认情况下,浏览器将始终使用包含表单的HTML页面的编码。确保此网页以UTF-8编码,并在元标题中包含UTF-8字符集声明。完成后,浏览器应正确提交UTF-8数据,您根本不需要转换任何内容。
答案 1 :(得分:2)
答案 2 :(得分:0)
json_decode('"\u4eac\u90fd"');
使用JSON @bobince https://stackoverflow.com/a/7107750的信誉,在这种情况下,反向搜索(UTF-8编码点)。那里的ASCII字符不会转换为代码点,但是会使用json_decode 转换,ASCII码点会转换为字符,例如'“ \ u0041”'->'A'。
(请记住,您需要在字符串中使用双引号。我很困惑为什么json_decode('\ u4eac \ u90fd');没有给出输出:-)
请注意,对于4字节UTF-8编码有特殊要求,其中代码点由5或6个十六进制数字组成。 JSON不使用花括号。
echo json_encode('');
//output: "\ud800\udf48"
是U + 10348。对我来说,分成两个代码点并不明显。请研究是否处理4字节UTF-8编码(例如表情符号)。
这是应该存在标准用途函数的令人沮丧的示例之一,但其中一个必须使用变通方法并在线找到许多复杂的用户函数。
*该功能确实存在于PHP7(http://php.net/manual/en/intlchar.chr.php)中,但是您需要安装intl扩展名,我不认为默认情况下是这样。