将unicode特殊字符转换为UTF-8



我在将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 . '"');

但是要小心,因为如果输入字符串包含换行符或引号,这可能会中断。

相关内容

  • 没有找到相关文章

最新更新