如何将编码从utf8更改为big-endian,仅用于阿拉伯字符通过短信服务发送短信?此代码不起作用。
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("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"]); }
就是这样。它应该有效。