SMPP接收器不支持Unicode文本
问题描述:
我正在使用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语言消息文本?
答
将.php脚本本身保存在utf-8中。这也必须与浏览器中的字符集对齐。
如果仍然不起作用,请查看mb_convert_encoding http://de2.php.net/manual/en/function.mb-convert-encoding.php。
答
该文本似乎从UNICODE中的SMSC发送。它应该只是一个使用正确的编码和字符集的事......尝试使用的字符集UTF-16-BE和UCS2编码
+0
SMPP响应不在Unicode中,因为浏览器支持Unicode和UTF-8,所以它应该以相同的格式返回所有输出,即使我使用UTF-16-BE解码,它也会返回垃圾值为英文文本。 –
答
试试这个
$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。
嘿@biplav,仍然有同样的问题。 –
@SushilKandola:你在哪里看到输出?它是在telnet上还是什么的,它可能不符合utf8。你可以把它写入一个文件,并用支持Utf8的编辑器打开。 – biplav
是的,我也写过这个文件,但格式相同。即使我将数据插入到sql数据库,它也支持UTF-8。 –