2011-09-01 203 views

回答

11

“%uXXXX”是用于URL编码Unicode字符的非标准方案。显然这是提出,但从未真正使用过。因此,几乎没有任何标准函数可以将其解码为实际的UTF-8序列。

这不是太困难,虽然自己做:

$string = '%u05E1%u05E2'; 
$string = preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $string); 
echo html_entity_decode($string, ENT_COMPAT, 'UTF-8'); 

此转换%uXXXX符号为HTML实体符号&#xXXXX;,可以通过html_entity_decode进行解码,以实际UTF-8。以上输出UTF-8编码中的字符“סע”。

+0

谢谢!它的工作很棒:) – jazz

+0

没有什么天才的! – HartleySan

0

使用hexdec将其转换为第一个十进制表示。

echo chr(hexdec("05E1")); 
var_dump(hexdec("%u05E1") == hexdec("05E1")); //true 
+2

'chr'只处理在ASCI中定义的代码点,它不会处理多字节的Unicode字符。上面的'echo's“?”。 – deceze