2014-06-18 42 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。