2010-09-14 109 views
3

我正在使用瀏覽器插件,它將當前頁面或任何選定鏈接的URL作爲參數,並將其發送到我們的服務器。 當網址中存在基本拉丁字母的字符時(如http://en.wikipedia.org/wiki/Vehicle),插件工作正常。但是,如果URL包含其他字母表中的字符(例如http://ru.wikipedia.org/wiki/Коляска),則該插件不起作用,但我確實使用了encodeURIComponent方法,但這似乎無法解決問題。任何想法?如何正確編碼JavaScript中的URL?

謝謝,

奧利維爾。

+2

http://ru.wikipedia.org/wiki/Коляска並不是一個真正有效的URL。當你把它輸入到一個現代瀏覽器時,它會自動對這些字符進行編碼。你能否更詳細地解釋你在做什麼,數據來自哪裏以及'encodeURIComponent'做了哪些不適合的事情?另外,「瀏覽器插件」究竟是什麼意思? – 2010-09-14 19:20:17

+1

背景:http://stackoverflow.com/questions/2742852/unicode-characters-in-urls – 2010-09-14 19:21:23

回答

1

如果您嘗試使用非ASCII字符的完整URI並將其轉換爲其編碼形式,則可能需要使用encodeURI/decodeURI。這些保留了特殊的URI字符,如:/,而不是轉義它們;它只能轉義在URI中無效的非ASCII字符和字符。因此,它們與在地址欄中輸入內容或將URI放入<a href="...">(儘管瀏覽器之間的行爲可能有所不同,但並不完全相同)基本相同。

encodeURIComponent僅用於對URI中的單個組件進行編碼,替換URI中有意義的特殊字符,以便您可以將該組件用作查詢參數或更長URI中的路徑組件。