2014-06-18 39 views
0

我正在使用SMPP Receiver API从特定的MSISDN获取消息。我正确地获取英文文本。但Dari和Pashto文本格式不相同。它显示输出象下面这样:
/
'2(
/' HFD/1

我的代码是:SMPP接收器不支持Unicode文本

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语言消息文本?

回答

0

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

如果仍然不起作用,请查看mb_convert_encoding http://de2.php.net/manual/en/function.mb-convert-encoding.php

+0

嘿@biplav,仍然有同样的问题。 –

+0

@SushilKandola:你在哪里看到输出?它是在telnet上还是什么的,它可能不符合utf8。你可以把它写入一个文件,并用支持Utf8的编辑器打开。 – biplav

+0

是的,我也写过这个文件,但格式相同。即使我将数据插入到sql数据库,它也支持UTF-8。 –

-2

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

+0

SMPP响应不在Unicode中,因为浏览器支持Unicode和UTF-8,所以它应该以相同的格式返回所有输出,即使我使用UTF-16-BE解码,它也会返回垃圾值为英文文本。 –

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。