utf(chinese char)在php中转换为十六进制格式

时间:2014-03-27 05:20:36

标签: php vb.net hex

我将消息传递给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

1 个答案:

答案 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 人