2010-02-08 85 views
10

我試圖通過HTTP請求傳遞一個字符串,該請求在URL查詢字符串中有一個字符%如何在URL查詢字符串中傳遞%?

url = url + "?q=" + str + "&block=" + block; // str contains the '%' character 

但是,在我發送該信息的ColdFusion頁上返回以下錯誤:

Element Q is undefined in URL.

我怎麼編碼在URL中%標誌?

回答

12

你應該URL編碼,所有的值要傳遞的查詢參數,但網址編碼爲%的是%25

更新:如果你在JavaScript構建查詢參數,你可能想要做到:

url=url+"?q="+encodeURIComponent(str)+"&block="+encodeURIComponent(block) 

(與ZeissS」非常有幫助的建議,使用encodeURIComponent代替escape再次更新又見http://xkr.us/articles/javascript/encode-compare/

+1

您應該使用'encodeURIComponent()',因爲您正在轉義URL的單個組件。 – ZeissS 2010-02-08 22:57:20

+0

非常感謝它的工作:) – 2010-02-08 22:57:28

9

您通過串槽的功能encodeURI(...)會逸出所有的特殊字符不僅%

+0

非常感謝! encodeURI()是一個很好的幫助。 – 2010-02-08 22:58:18

+0

也考慮'encodeURIComponent',正如Brad G.的答案中指出的那樣。 'encodeURI'不編碼某些在這種情況下*應編碼的字符。一個不編碼的字符就是'&',作爲它在這裏可能不好的一個簡單例子。 – 2010-02-08 23:19:50

+0

@pst但是,如果你想在查詢字符串中傳遞參數,爲什麼要轉義&分開參數? – Mic 2010-02-08 23:39:47

3

ColdFusion的URLEncodedFormat()

+0

謝謝你的時間。 我可以在Oracle數據庫中插入數據時使用URLEncodedFormat()嗎? – 2010-02-08 23:00:28

+0

當然,但你必須問自己,這是否真的是你想要做的。 – Henry 2010-02-08 23:11:50

-2

我們可以在ColdFusion中使用URLEncodedFormat()以及我們可以使用下面提到的一個。

  • 是encodeURI(...)
  • encodeURIComponent方法

這兩人還幫助我們解決我們的問題。