php: Как получить символ юникода из STRING "U4e9c"? - PullRequest
0 голосов
/ 30 октября 2010

Это не работает (просто повторяет "U4e9c"):

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

Полагаю, нужен какой-то кастинг "U4e9c", но не могу понять, как ...

Ответы [ 4 ]

2 голосов
/ 30 октября 2010

этот комментарий предоставляет две функции, потому что unicode_decode(), кажется, не существует в php5. Вот мои тесты, похоже на работу:

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 голос
/ 30 октября 2010

Это, кажется, работает нормально:

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

Обновление

Вот где приходит mb_convert_encoding:

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

Это позволяетОБНОВИТЬ мою базу данных mysql с $ k (тогда как без mb_convert_encoding она работает только для отображения на странице HTML).

0 голосов
/ 20 ноября 2012

См. Это: Символ Unicode в строке PHP

Поскольку JSON напрямую поддерживает синтаксис \ uxxxx, первое, что приходит в голову это:

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

echo json_decode('"\\'."U4e9c".'"');
0 голосов
/ 30 октября 2010
function utf8chr($i) {
    return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}

echo utf8chr(hexdec(substr('U4e9c', 1)));  // echo utf8chr(0x4E9C)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...