我正在使用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语言消息文本?
答案 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