将unicode转换为字符

时间:2015-04-29 13:30:21

标签: php unicode

我尝试在vBulletin论坛中构建标记系统,它运行正常。

但我对帖子的快速编辑有问题(使用AJAX)。

如果我用希伯来语写字符,它会将字符替换为Unicode。

当我用希伯来语写一篇文章时的一个例子:

חחחחח לא?test!!

它将成为:

%u05D7%u05D7%u05D7%u05D7%u05D7 %u05DC%u05D0?test!!

1 个答案:

答案 0 :(得分:3)

看起来好像被弃用的javascipt函数escape()用于编码字符串。如果您通过JavaScript在网页上回复此问题,则可以使用unescape() - 请参阅this fiddle。但是,如上所述,这已被弃用。

应该使用的encodeURIComponent()代替escape()decodeURIComponent()代替unescape()。然后,如果这是必要的步骤,您可以在PHP中使用urldecode()来获得所需的结果。

鉴于您当前的设置,要将unicode字符转换为适合在浏览器中呈现的html实体,以下内容应该可以满足您的需求:

$str = preg_replace_callback('/%u([0-9a-fA-F]{4})/', function ($match) {
    return mb_convert_encoding(pack('H*', $match[1]), 'HTML-ENTITIES', 'UCS-2BE');
}, $str);