php:如何从STRING“U4e9c”获取unicode角色?

时间:2010-10-30 10:48:38

标签: php unicode

这不起作用(只是回应“U4e9c”):

echo mb_convert_encoding("U4e9c","UTF-8","auto");

我想某种铸造“U4e9c”是必需的,但无法弄清楚如何......

4 个答案:

答案 0 :(得分:2)

this comment提供了两个函数,因为php5中似乎不存在unicode_decode()。 以下是我的测试,似乎有效:

greg@liche :) ~ > php -a
Interactive shell

php > function unicode_decode($str){                                           
php {     return preg_replace(
php (         '#\\\u([0-9a-f]{4})#e',
php (         "unicode_value('\\1')",
php (         $str);
php { }
php > 
php > function unicode_value($code) {
php {     $value=hexdec($code);
php {     if($value<0x0080)
php {         return chr($value);
php {     elseif($value<0x0800)
php {         return chr((($value&0x07c0)>>6)|0xc0)
php {             .chr(($value&0x3f)|0x80);
php {     else
php {         return chr((($value&0xf000)>>12)|0xe0)
php {         .chr((($value&0x0fc0)>>6)|0x80)
php {         .chr(($value&0x3f)|0x80);
php { } 
php > echo unicode_decode('\u4e9c');
亜
php > echo mb_convert_encoding(unicode_decode('\u4e9c'),  "UTF-8", "auto");
亜

答案 1 :(得分:1)

这似乎工作正常:

echo "&#" . hexdec(str_replace("U","","U4e9c")) . ";";

更新

这是mb_convert_encoding的来源:

$k = "&#" . hexdec(preg_replace("/[Uu]/","","U4e9c")) . ";";
$k=mb_convert_encoding($k ,"UTF-8","HTML-ENTITIES");

这允许我用$ k更新我的mysql DATABASE(而没有mb_convert_encoding它只适用于HTML页面内的显示)。

答案 2 :(得分:0)

function utf8chr($i) {
    return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}

echo utf8chr(hexdec(substr('U4e9c', 1)));  // echo utf8chr(0x4E9C)

答案 3 :(得分:0)

请参阅:Unicode character in PHP string

  

因为JSON直接支持\ uxxxx语法   进入我的脑海是:

     

$unicodeChar = '\u1000'; echo json_decode('"'.$unicodeChar.'"');

echo json_decode('"\\'."U4e9c".'"');