PHP字符串中的Unicode字符

PHP字符串中的Unicode字符

这个问题看起来很简单,但我一直找不到答案。

PHP相当于以下C#代码行?

string str = "\u1000";

此示例创建一个具有单个Unicode字符的字符串,其“Unicode数字值”以十六进制(小数点为4096)为1000。

也就是说,在PHP中,如何使用已知“Unicode数值”的单个Unicode字符创建字符串?



拉丁的传说
浏览 282回答 3
3回答

有只小跳蛙

因为JSON直接支持\uxxxx语法我首先想到的是:$unicodeChar = '\u1000';echo json_decode('"'.$unicodeChar.'"');另一个选择是使用mb_convert_encoding()echo mb_convert_encoding('က', 'UTF-8', 'HTML-ENTITIES');或者利用UTF-16BE(大端)和Unicode码点之间的直接映射:echo mb_convert_encoding("\x10\x00", 'UTF-8', 'UTF-16BE');

慕无忌1623718

PHP不知道这些Unicode转义序列。但是,由于未知的转义序列不受影响,您可以编写自己的函数来转换这些Unicode转义序列:function unicodeString($str, $encoding=null) {     if (is_null($encoding)) $encoding = ini_get('mbstring.internal_encoding');     return preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/u', create_function('$match', 'return mb_convert_encoding(pack("H*", $match[1]),      '.var_export($encoding, true).', "UTF-16BE");'), $str);}或者用一个匿名函数表达式而不是create_function:function unicodeString($str, $encoding=null) {     if (is_null($encoding)) $encoding = ini_get('mbstring.internal_encoding');     return preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/u', function($match) use ($encoding) {         return mb_convert_encoding(pack('H*', $match[1]), $encoding, 'UTF-16BE');     }, $str);}它的用法:$str = unicodeString("\u1000");
打开App,查看更多内容
随时随地看视频慕课网APP