表情符号 (Unicode) 到 UTF-8 & 符号哈希 (?) 编码
Emoji (Unicode) to UTF-8 ampersand hash (?) encoding
为了保持与现有 PHP 解决方案的兼容性,我需要
输入: // emoji character
,
输出:😁
我相信这是 'ampersand hash' 编码(我不确定它叫什么。如果我能找到任何资源来解释我是如何得到这种格式的,我会被诅咒的......或者为什么这种编码适用于...)
我可以通过 URL 编码 Unicode 获取字节...
<?php print urlencode(""); /* Output: %F0%9F%98%81 */ ?>
...我可以使用正则表达式将其转换为我需要的格式...但我不喜欢这种解决方案。它非常 hacky 并且很容易意外编码未编码的字符串...
<?php
$enc = urlencode("");
print $enc; // %F0%9F%98%81
$find = '/(%)([0-9a-fA-F][0-9a-fA-F])/i';
$replacement = '&#x;';
print preg_replace($find,$replacement,$enc);
?>
结果:😁
有没有更好的方法?
这种编码称为什么,我如何获得它(通过 PHP)?
非常感谢!
编辑: 事实证明,这种做法终究是不合适的。 urlencode
将所有空格转换为 +
个字符。必须有一个正确的方法才能达到这种格式?
😁
是 "html entities";它代表 4 个十六进制字节 F09F9891,这是该表情符号的 UTF-8 编码。我怀疑你是想安抚 HTML,而不是 PHP?
http://unicode.scarfboy.com/?s=%F0%9F%98%81 -- 转到 "string stuff" 页面的一部分,看看如何为 HTML、utf8、python、javascript 编码等
PHP 中的一种方式是:
echo bin2hex(''); // f09f9881
然后将其分成 2 个十六进制数字组。
为了保持与现有 PHP 解决方案的兼容性,我需要
输入: // emoji character
,
输出:😁
我相信这是 'ampersand hash' 编码(我不确定它叫什么。如果我能找到任何资源来解释我是如何得到这种格式的,我会被诅咒的......或者为什么这种编码适用于...)
我可以通过 URL 编码 Unicode 获取字节...
<?php print urlencode(""); /* Output: %F0%9F%98%81 */ ?>
...我可以使用正则表达式将其转换为我需要的格式...但我不喜欢这种解决方案。它非常 hacky 并且很容易意外编码未编码的字符串...
<?php
$enc = urlencode("");
print $enc; // %F0%9F%98%81
$find = '/(%)([0-9a-fA-F][0-9a-fA-F])/i';
$replacement = '&#x;';
print preg_replace($find,$replacement,$enc);
?>
结果:😁
有没有更好的方法?
这种编码称为什么,我如何获得它(通过 PHP)?
非常感谢!
编辑: 事实证明,这种做法终究是不合适的。 urlencode
将所有空格转换为 +
个字符。必须有一个正确的方法才能达到这种格式?
😁
是 "html entities";它代表 4 个十六进制字节 F09F9891,这是该表情符号的 UTF-8 编码。我怀疑你是想安抚 HTML,而不是 PHP?
http://unicode.scarfboy.com/?s=%F0%9F%98%81 -- 转到 "string stuff" 页面的一部分,看看如何为 HTML、utf8、python、javascript 编码等
PHP 中的一种方式是:
echo bin2hex(''); // f09f9881
然后将其分成 2 个十六进制数字组。