这不起作用(只是回应“U4e9c”):
echo mb_convert_encoding("U4e9c","UTF-8","auto");
我想某种铸造“U4e9c”是必需的,但无法弄清楚如何......
答案 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".'"');