【发布时间】:2016-02-21 06:57:19
【问题描述】:
我有一个字符串,它是以下形式的 unicode 表示:'\ud83d\ude01'。我怎样才能把它翻译成它实际的 UTF-8 表示:'????'?
我已经尝试了以下代码:
$emoji = '\\ud83d\\ude01';
#Cleanup
$emoji = str_replace("\\u", "", $emoji);
#Split hex
$hex_bytes = str_split($emoji, 2);
$hex_bytes_numbers = array();
#Convert to actual numbers
foreach($hex_bytes as $hex)
array_push($hex_bytes_numbers, hexdec($hex));
$clean_hex_string = implode(array_map("chr", $hex_bytes_numbers));
#Returns: Ø=Þ
echo $clean_hex_string . "\n";
#Returns : ?=?
echo utf8_decode($clean_hex_string);
【问题讨论】:
-
只是出于好奇:那个字符串是从哪里来的? (换句话说,是什么导致您收到
'\\ud83d\\ude01'而不仅仅是'????'?)
标签: php string unicode utf-8 emoji