我在将unicode字符转换为utf-8时遇到问题。这是我的代码:
<?php
$unicode = 'u0411. u0426u044du0446u044du0433u0441u04afu0440u044du043d';
$utf8string = html_entity_decode(preg_replace("/U+([0-9A-F]{4})/", "&#x\1;", $unicode), ENT_NOQUOTES, 'UTF-8');
echo $utf8string;
?>
它给了我以下信息:
u0411. u0426u044du0446u044du0433u0441u04afu0440u044du043d
我做错了什么?有什么建议吗?
至少您的正则表达式正在寻找大写的U
,而所有转义序列都使用小写。
但是您的转换脚本从javascript转义的unicode字符到HTML实体,再到PHP字符串。这可能是一个更明智的解决方案(对于这个字符串(:
$unicode = 'u0411. u0426u044du0446u044du0433u0441u04afu0440u044du043d';
echo json_decode('"' . $unicode . '"');
但是要小心,因为如果输入字符串包含换行符或引号,这可能会中断。