0

我用 PHP 编写了一个 SMPP 服务器收发器。我从我的 SMPP 中得到这个 SMS 字符串。这是一条 UTF8 消息,实际上是 7Bit。这是一条示例消息:

  5d30205d30205d3

我知道如何转换它。它应该是:

  \x5d3\x020\x5d3\x020\x5d3

I don't want to write it myself. I guess there is already a function that does that for me. Some hidden iconv or using pack() / unpack() to convert this string to the correct format.

我正在尝试使用 PHP 来实现这一点。有任何想法吗?

谢谢。

4

2 回答 2

1

这应该这样做:

$message = "5d30205d30205d3";
echo "\x".implode("\x", str_split($message, 3));
// \x5d3\x020\x5d3\x020\x5d3
于 2013-01-23T14:19:46.820 回答
0

这是我最终使用的:

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');
}

10 倍。全部。

于 2013-01-27T06:46:16.963 回答