2011-05-31 551 views
8

我是一個url編碼的字符串傳遞給一個函數。但是,它將第二個空格編碼爲「%A0」。這意味着當我解碼字符串時,「%A0」在黑盒中顯示爲問號。「+」和「%A0」之間的區別 - urlencoding?

我真的只需要能夠刪除多餘的空間,但我想了解是什麼導致這種情況,以及如何正確處理它。

例如:

Something  Something else 

編碼對:

Something+%A0Something+else 
+0

[URL編碼空格字符:+或%20?]可能的重複(http://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20) – 2011-05-31 19:58:54

+3

@AJ:這是不一樣的。請閱讀這個問題。 OP想知道爲什麼'%A0'出現在編碼值中,而不是是使用'+'還是'%20'來轉義空格。 – 2011-05-31 20:01:39

回答

13

%A0表示NBSP(U + 00A0)。 +指示正常空間(U + 0020)。 NBSP顯示爲替換字符(U + FFFD),因爲字符的編碼與頁面的編碼不匹配,所以其字節序列對頁面無效。

1

您遇到的問題是,第二個「空間」是不是一個真正的空間,這是一個字符的字體沒有按沒有一個字形(我認爲這是一個術語)來表示(因此帶有問號的黑框)。 %A0是該角色的escape code。你的代碼在技術上正確地處理它,我認爲問題在於首先產生字符串的任何東西。

4

快速谷歌搜索顯示%A0是非破壞性的空格字符或 在HTML中。 A +是標準空格字符的表單編碼。

Source

相關問題