2011-11-23 126 views
0

我目前正在爲doc文件生成的html文件編寫解析器。字符串包含像alpha beta等符號...問題是,當我做一個urldecode(urlencode(alpha));它沒有給符號..它返回別的東西。urlencode中的符號錯誤,PHP

要找到我的問題只是檢查

urldecode("%0A%20%20If%20%3Ci%20style%3D%22mso-bidi-font-style%3Anormal%22%3E%CE%B1%3C%2Fi%3E%2C%20b%2C%20g%0A%20%20be%20the%20zeroes%20of%20the%20polynomial%20%3Ci%20style%3D%22mso-bidi-font-style%3Anormal%22%3Eax%3C%2Fi%3E%3Csup%3E3%3C%2Fsup%3E%0A%20%20%2B%20b%3Ci%20style%3D%22mso-bidi-font-style%3Anormal%22%3Ex%3C%2Fi%3E%3Csup%3E2%3C%2Fsup%3E%20%2B%20c%3Ci%20style%3D%22mso-bidi-font-style%3Anormal%22%3Ex%3C%2Fi%3E%20%2B%20d%2C%20the%20the%20value%20of%20%3Ci%20style%3D%22mso-bidi-font-style%3Anormal%22%3E%26nbsp%3B%CE%B1%3C%2Fi%3Eb%20%2B%20bg%20%2B%20g%3Ci%20style%3D%22mso-bidi-font-style%3Anormal%22%3E%20%CE%B1%3C%2Fi%3E%26nbsp%3B%20is%0A%20%20"); 

是有辦法解決這一問題?

+3

是?看起來是什麼問題? http://codepad.org/ogymDijK – deceze

+0

只需運行上面提到的函數即可。你可以發現有一些垃圾字符取代了阿爾法符號。 –

+0

如上面的鏈接所示,不,我沒有發現。可能你只是用錯誤的字符集來解釋結果。你使用哪個字符集? – deceze

回答

1

你有一個字符集不匹配。該符號很可能會解碼爲UTF-8,但您將該網站解釋爲其他內容,可能是Latin-1。要確認,請從瀏覽器的「查看」>「編碼」菜單中選擇UTF-8。設置一個適當的header所以網站使用UTF-8總是解釋:

header('Content-Type: text/html; charset=utf-8'); 

這意味着你還需要確保你的網站的其餘部分是有效的UTF-8,或以其他方式匹配文本的編碼。

+0

是的,它絕對是UTF-8。來自urlencoded字符串的'%CE%B1'是UTF-8中的α(小寫字母)。 –

-1
You can used javascript function unescape($urlfordecode); 
Its decode your url, if you want to mannually check then used following url 

http://meyerweb.com/eric/tools/dencoder/

使用下面的代碼的PHP

$urlfordecode ="Your encoded url place here"; 

    $a = explode('&', $urlfordecode); 
    $i = 0; 
    while ($i < count($a)) { 
     $b = explode('=', $a[$i]); 
     echo 'Your decoded url is => </br>',htmlspecialchars(urldecode($b[0])), 
     htmlspecialchars(@urldecode($b[1])), "<br />\n"; 
     $i++; 
    }