Php SMPP接收器不支持Unicode文本

Php SMPP接收器不支持Unicode文本,php,unicode,sms,sms-gateway,smpp,Php,Unicode,Sms,Sms Gateway,Smpp,我使用SMPP接收器API从特定MSISDN获取消息。我正确地理解了英文文本。但达里语和普什图语文本的格式不同。它显示如下输出: / '2� /'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->

我使用SMPP接收器API从特定MSISDN获取消息。我正确地理解了英文文本。但达里语和普什图语文本的格式不同。它显示如下输出: / '2� /'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/

如何获得正确的达里语和普什图语信息文本

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


如果仍然不起作用,请检查mb_convert_编码。

文本似乎是从SMSC以UNICODE格式发送的。这应该只是使用正确的编码和字符集的问题。。。尝试使用字符集UTF16-BE并编码UCS2


它完全适用于波兰语字符,我很确定它适用于所有unicode。

hey@biplav,它仍然存在同样的问题。@SushilKandola:您在哪里看到输出?如果是在telnet或其他什么上,它可能不符合utf8。你能把它写进一个文件并用一个支持Utf8的编辑器打开吗?是的,我也写过这个文件,但格式相同。即使我将数据插入sql数据库,它也支持UTF-8。您使用哪个编辑器查看文件。请仔细阅读此内容以了解unicode的工作原理。无论你收到什么垃圾,都意味着内容在那里,但你无法正确查看。Biplav,如果我打印一些Dari和Pashto Lang的静态值,那么浏览器将显示完全相同的输出。正如我所想,SMPP正在返回一些浏览器不理解的垃圾值。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);