【问题标题】:Converting SMS encoding to UTF-8 in PHP在 PHP 中将 SMS 编码转换为 UTF-8
【发布时间】:2013-01-23 13:32:41
【问题描述】:

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

  5d30205d30205d3

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

  \x5d3\x020\x5d3\x020\x5d3

我不想自己写。我想已经有一个功能可以为我做到这一点。一些隐藏的 iconv 或使用 pack() / unpack() 将此字符串转换为正确的格式。

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

谢谢。

【问题讨论】:

标签: php encoding sms smpp 7-bit


【解决方案1】:

应该这样做:

$message = "5d30205d30205d3";
echo "\x".implode("\x", str_split($message, 3));
// \x5d3\x020\x5d3\x020\x5d3

【讨论】:

    【解决方案2】:

    这是我最终使用的:

    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 倍。全部。

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 2012-06-30
      • 2011-06-26
      • 2014-02-02
      • 2012-01-15
      • 2013-04-22
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多