php - 如何将编码从 utf8 更改为大端
问题描述
如何仅将阿拉伯字符的编码从 utf8 更改为 big-endian 以通过 SMS 服务发送 SMS 消息?此代码不起作用。
mb_convert_encoding($str, "UCS-2BE", "auto");
结果应该是 这样的
解决方案
您必须执行以下操作:
检查编码和阿拉伯字符的存在。你可以这样做:
//$text - string that you need to convert if (mb_detect_encoding ($text) == "UTF-8" && mb_ereg('[\x{0600}-\x{06FF}]', $text)) { ... }
将字符串转换为 USC-2BE 编码。您可以使用iconv函数
iconv("UTF-8", "UCS-2BE", $text)
然后解压缩为所需的格式(H*hex - 在你的情况下)并转换为大写:
if (mb_detect_encoding ($text) == "UTF-8" && self::isArabic($text)) { $arr = unpack("H*hex", @iconv("UTF-8", "UCS-2BE", $text)); $text = strtoupper($arr["hex"]); }
而已。它应该工作。
推荐阅读
- f# - 如何获得一个简单的 F# 应用程序以使用 Paket 进行编译?
- ruby - Rails:防止删除和销毁活动记录
- mysql - 卸载 Wamp 服务器后无法恢复 MySQL 数据库
- php - PHP header()不发送自定义消息
- javascript - 在 react 组件的 handleChange(e) 函数中使用“e”来访问文本框值是否有任何替代方法?
- javascript - 无法用我的 tensorflow js 预测价值
- database - Microsoft Access 中的自定义事件/活动日志记录
- javascript - 如何在存储在 Mongoose 集合中的数组中调用`findOne` 函数?
- r - 如何在 R 中使用 dplyr 有条件地总结不同的数据列?
- javascript - 在 vue.js 中加载页面或视图后如何触发点击事件?