在PHP中将SMS编码转换为UTF-8
我用PHP编写了一个SMPP服务器收发器。 我从SMPP中获取此SMS字符串。这是一条UTF8消息,实际上是7Bit。下面是一条示例消息:在PHP中将SMS编码转换为UTF-8,php,encoding,sms,smpp,7-bit,Php,Encoding,Sms,Smpp,7 Bit,我用PHP编写了一个SMPP服务器收发器。 我从SMPP中获取此SMS字符串。这是一条UTF8消息,实际上是7Bit。下面是一条示例消息: 5d30205d30205d3 我知道如何转换它。应该是: \x5d3\x020\x5d3\x020\x5d3 我不想自己写。我想已经有一个函数为我实现了这一点。某些隐藏的iconv或使用pack()/unpack()将此字符串转换为正确的格式 我试图用PHP实现这一点。 有什么想法吗 谢谢。这应该可以做到: $message = "5d3020
5d30205d30205d3
我知道如何转换它。应该是:
\x5d3\x020\x5d3\x020\x5d3
我不想自己写。我想已经有一个函数为我实现了这一点。某些隐藏的iconv或使用pack()/unpack()将此字符串转换为正确的格式
我试图用PHP实现这一点。
有什么想法吗
谢谢。这应该可以做到:
$message = "5d30205d30205d3";
echo "\x".implode("\x", str_split($message, 3));
// \x5d3\x020\x5d3\x020\x5d3
以下是我最终使用的:
public static function sms__from_unicode($message)
{
$org_msg = str_split(strtolower($message), 3);
for($i = 0;$i < count($org_msg); $i++)
$org_msg[$i] = "\u0{$org_msg[$i]}";
$str = implode(null, $org_msg);
$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $str);
return $str;
}
function replace_unicode_escape_sequence($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
来自unicode($message)的公共静态函数sms
{
$org\u msg=str\u split(strtolower($message),3);
对于($i=0;$i