如何在PHP中从Unicode转换表情符号?
我使用此代码并尝试以下代码:如何在PHP中从Unicode转换表情符号?,php,unicode,emoji,Php,Unicode,Emoji,我使用此代码并尝试以下代码: <?php print json_decode('"\u2600"'); // This convert to ☀ (black sun with rays) ?> PHP5 JSON的\u一次只能处理一个UTF-16代码单元,因此您需要编写代理项对。对于这是\uD83D\uDE00,它可以工作: echo json_decode('"\uD83D\uDE00"'); In addition to the answer of Tino, I'd lik
<?php print json_decode('"\u2600"'); // This convert to ☀ (black sun with rays) ?>
PHP5
JSON的\u
一次只能处理一个UTF-16代码单元,因此您需要编写代理项对。对于这是\uD83D\uDE00
,它可以工作:
echo json_decode('"\uD83D\uDE00"');
In addition to the answer of Tino, I'd like to add code to convert hexadecimal code like 0x1F63C
to a unicode symbol in PHP5 with splitting it to a surrogate pair:
function codeToSymbol($em) {
if($em > 0x10000) {
$first = (($em - 0x10000) >> 10) + 0xD800;
$second = (($em - 0x10000) % 0x400) + 0xDC00;
return json_decode('"' . sprintf("\\u%X\\u%X", $first, $second) . '"');
} else {
return json_decode('"' . sprintf("\\u%X", $em) . '"');
}
}
回声json_解码(“\uD83D\uDE00”);
除了Tino的答案外,我还想添加代码,将十六进制代码(如0x1F63C
)转换为PHP5中的unicode符号,并将其拆分为代理项对:
echo codeToSymbol(0x1F63C)代码>输出您尝试过字节表示法吗?也许你的浏览器不能显示这个?如果你以正确的编码保存PHP文件,你也可以只写print('如果你的问题与如何将它们保存在数据库中有关,如果你使用MySQL,你可以将图表集改为utfbm4
。看看。