2009-11-15 26 views

回答

33

encodeURIComponent()應該工作。例如,

'&url=' + encodeURIComponent("http://a.com/?q=query&n=10") 

產生

"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10" 

(其不具有任何 '&' 或 '?' 中的值)。 當你的服務器獲取此URL,它應該能夠解碼,要獲得原文:

param["url"] = "http://a.com/?q=query&n=10" 

我不知道你正在使用的服務器(例如Rails的,Django的,...),但應該在任何正常系統上「開箱即用」工作。

-1

使用escape()對url進行編碼,它會對&符號進行編碼,以免發生。

+3

'escape'類似於'encodeURIComponent',但是會爲'+'字符和任何非ASCII字符產生錯誤的輸出。它不應該被使用。 – bobince 2009-11-15 16:21:38

3

使用'& url ='+ encodeURIComponent(url);將URL從瀏覽器傳遞到服務器將對URL進行編碼

是的,這就是你應該做的。 encodeURIComponent是對輸入查詢字符串部分的文本值進行編碼的正確方法。

但是當它在服務器上解碼時,url的參數被解釋爲單獨的參數而不是單個url參數的一部分。

然後服務器確實非常破碎。如果真的發生了什麼,你需要在服務器端修復它。

代碼?

-2

老實說,請使用Google URL Shortener。然後,您只需使用網址查詢字符串中的網址代碼即可:http://example.com/url/A7dh3

在您的應用程序中,取得該網址並預先填寫Google URL Shortener域名,然後執行重定向。這也通過Google Analytics向URL添加了跟蹤。這種方法有許多優點。只需簡短的代碼並添加追蹤數據。

0

我沒有嘗試它,但BASE64編碼/解碼也應該工作。