SMPP接收器不支持Unicode文本

时间:2014-06-18 10:28:34

标签: php unicode sms sms-gateway smpp

我正在使用SMPP Receiver API来获取来自特定MSISDN的消息。我正确地得到了英文文本。但是Dari和Pashto文本的格式不同。它显示如下输出:
/
' 2(�
/&#39; HFD / 1 <登记/> 我的代码是:

ob_start();
require_once "smpp.php";//SMPP protocol
//connect to the smpp server
$tx=new SMPP('IP',PORT);
//bind the receiver
$tx->system_type="NUll";
$tx->addr_npi=0;
$tx->bindReceiver("username","password");
do
{
//read incoming sms
  if($sms=$tx->readSMS())
  {
    print_r($sms);
  }
}while($sms);

smpp.php位于:

http://121.100.50.58/apps/smpp/

如何获取正确的Dari和Pashto语言消息文本?

3 个答案:

答案 0 :(得分:1)

试试这个

$utf8 = $body;

$encodedMessage = mb_convert_encoding($utf8, "UCS-2", "utf8");
$from = new SmppAddress($sender, SMPP::TON_ALPHANUMERIC);
$to = new SmppAddress($number, SMPP::TON_INTERNATIONAL, SMPP::NPI_E164);

$smppClient->sendSMS($from, $to, $encodedMessage, [], SMPP::DATA_CODING_UCS2);

它完全适用于抛光字符,我很确定它适用于所有unicode。

答案 1 :(得分:0)

将.php脚本本身保存在utf-8中。这也必须与浏览器中的charset对齐。

如果仍然无效,请查看mb_convert_encoding http://de2.php.net/manual/en/function.mb-convert-encoding.php

答案 2 :(得分:-1)

该文本似乎是从UNICODE的SMSC发送的。它应该只是使用正确的编码和字符集...尝试使用字符集UTF16-BE和编码UCS2