我正在使用PHP进行此Web开发项目。现在,我正在处理用户页面,用户可以在其中添加他知道的单词。当然,我开始粗暴,没有添加任何特殊功能,如你知道这个角色建议等。
我已经解决了在我的MySQL数据库中添加UTF-16校对和字符集设置为UTF-16的挑战,实际上是在http://freemysqlhosting.net在线,以支持我网站中的中文字符。现在我正在努力的是为我的汉字支持自动拼音生成。
我在搜索了所有的搜索结果后找到了这个:https://github.com/reorx/pinyindep/blob/master/Uni2Pinyin。每行以一个中文字符开头,以UTF-16代码单位表示。
以爱为例。在UTF-16中,它 7231 。我在https://r12a.github.io/apps/conversion/转换了这个。当我在文件中查找时,我得到了拼音。 :D这是我需要的功能,虽然在GitHub中查找是在JS而不是PHP。
在手动查找中,返回ai4,这是正确的语调。现在,我正在寻找的是PHP内置库或转换此字符串输入的代码片段,让我们说“爱”成UTF-16四字符代码单元,例如 7321 < / b>
我应该如何将字符串形式的中文字符转换为UTF-16代码单元? (通过内置库,或通过建议的PHP代码片段)
P.S。我不喜欢第三方工具,除非它们在全球范围内非常受欢迎,或者别无选择。
答案 0 :(得分:2)
您需要使用PHP的multibyte string模块:
$c = "爱";
list(, $d) = unpack('N', mb_convert_encoding($c, 'UCS-4BE', 'UTF-8'));
echo dechex($d);
// => 7231
如果您的字符串来自该编码的数据库,请将UTF-8
更改为UTF-16
。
mb_convert_encoding
会将字符串更改为每字符四个字节的编码;然后unpack
将四个字节转换为无符号长整数;最后,使用dechex
转换为十六进制字符串。
答案 1 :(得分:0)
如果您使用的是PHP 7.2+,则可以使用mb_ord简化转换。
echo dechex(mb_ord("爱"));