2012-12-10 27 views
0

我的PHP文件是UTF-8編碼,我試圖編碼我的數據安全發送到應用程序,但一些字符編碼不正確。PHP urlencoding問題

$text = "Š"; 
$text = urlencode(utf8_decode($text)); 
echo $text; 

回聲%3F但根據這裏找到W3C URL編碼參考(http://www.w3schools.com/tags/ref_urlencode.asp), 「S」 應被轉換成%8A。 Php自己的參考文獻也沒有說明它使用的是什麼引用。這可能是編碼/解碼問題還是別的?

回答

0

utf8_decode試圖從UTF-8轉換爲ISO-8859-1,但ISO-8859-1中不存在Š。所以你獲得'?' (=%3F),替代字符。

它存在於CP1252(也許是其他)中,在十六進制代碼8A下。所以:

$text = urlencode(iconv('UTF-8', 'CP1252', $text)); 

應該給你所期望的。實際上,你不應該解碼一個unicode字符串。