$message = "Spanish Language
á, é, í, ó, ú, ñ, ü
";
$hex = '@U' . strtoupper(bin2hex(mb_convert_encoding($message, 'UCS-2','auto')));
当我将$ hex发送到以下API中时,除表情符号外,其他所有东西都没问题,而如果表情符号?
符号出现在移动设备中
https://api.txtlocal.com/docs/encodingdecodingunicode
请纠正我做错的事情。
答案 0 :(得分:2)
这些表情符号在UCS-2中无法表示。在UTF-16中,使用代理对表示它们,而UCS-2不支持代理对。例如,在UTF-16中的编码如下:
0x3d 0xd8 0x0b 0xde
这是四个字节,尽管据称只是一个字符。 UCS-2保证其中包含的所有字符都将恰好占两个字节,因此不包括在内。
答案 1 :(得分:0)
我已解决此问题,只需按照代码行进行更改
return '@U' . strtoupper(bin2hex(mb_convert_encoding($message, 'UTF-16','UTF-8')));