我正在使用Iconv函数将字符串转换为请求的字符编码.看下面的代码
$sms_text = 'A:'f3*'F'; // Output received from SMPP $result = iconv('UTF-16BE' ,'UTF-8//IGNORE' , $sms_text); echo 'Ignore: ' .$result; echo $sms_text = iconv('UTF-16BE' ,'UTF-8' , $sms_text); $result1 = iconv('UTF-16BE' ,'UTF-8//TRANSLIT' , $sms_text); //line no (53) echo 'Transilt: '.$result1;
我收到了以下输出
如果我有一个dari和pashto语言字符串,那么它只显示第一个单词,并且在空格后不返回剩余的字符串.甚至// IGNORE也提供相同的输出.
我应该在其他角色的帮助下替换这些空格,以便我可以获得完整的字符串吗?
注意:我正在传递从SMPP(接收方)收到的字符串.
SMS Sent to SMPP : ????????? ???? Outpur Received from SMPP : 'A:'f3*'F String back converted by iconv : ?????????
英文字符串运作良好.
提前致谢.
您将在此行上将字符串转换为UTF-8字符集:
echo $sms_text = iconv('UTF-16BE' ,'UTF-8' , $sms_text);
出现错误,因为您试图第二次转换它.要解决此问题,您不应更新上述行上的$ sms_text变量.
这是一个适合我的代码和输出:
$sms_text ="???????? ????"; echo "UTF-8 : $sms_text \n"; $sms_text = iconv('UTF-8', 'UTF-16BE', $sms_text); echo "UTF-16BE : $sms_text \n"; echo 'Ignore: ' . iconv('UTF-16BE' ,'UTF-8//IGNORE' , $sms_text) . "\n"; echo 'Simple: ' . iconv('UTF-16BE' ,'UTF-8' , $sms_text) . "\n"; echo 'Transilt: '. iconv('UTF-16BE' ,'UTF-8//TRANSLIT' , $sms_text) . "\n";
输出:
UTF-8 : ???????? ???? UTF-16BE : A:'F3*'F Ignore: ???????? ???? Simple: ???????? ???? Transilt: ???????? ????
至于空格,请你分享测试字符串?