我将消息传递给SMS api,
这是文档
通常,Unicode消息是阿拉伯语和中文消息,它们是 由GSM标准定义。 Unicode消息只是普通文本 输入消息但必须以HEX格式提交。提交 跟随Url使用的Unicode消息。
我试过bin2hex()
没有输出效果。
$str = '人';
//$str = 'a';
$output = bin2hex($str);
echo $output;
//output
//人 = e4baba ; I would expect '4EBA'
我找到了类似的解决方案但是在VB.net中有人可以转换它吗? http://www.supportchain.com/index.php?/Knowledgebase/Article/View/28/7/unable-to-send-sms-with-chinese-character-using-api
我试过的样本,这是工作: -
转换示例:转换为十六进制为0061,人转换为十六进制为4EBA
答案 0 :(得分:1)
您面临的问题与编码有关。由于这些被视为特殊字符,因此在转换为十六进制时需要添加一些编码细节。
这些输出中的每一项都与我在运行时所寻找的完全相同:
echo bin2hex(iconv('UTF-8', 'ISO-10646-UCS-2', '人')) . PHP_EOL;
//Outputs 4eba
echo bin2hex(iconv('UTF-8', 'UNICODE-1-1', '人')) . PHP_EOL;
//Outputs 4eba
echo bin2hex(iconv('UTF-8', 'UTF-16BE', '人')) . PHP_EOL;
//Outputs 4eba
选择你喜欢的那个。
如果您想转换回来:
echo iconv('UTF-16BE', 'UTF-8', hex2bin('4eba')) . PHP_EOL;
//outputs 人