簡體   English   中英

iconv():在輸入字符串中檢測到非法字符

[英]iconv(): Detected an illegal character in input string

我正在使用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(receiver)接收的字符串。

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: فغانستان کابل

至於空格,能否請您分享測試字符串?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM