2011-03-21 39 views
1

我想URL編碼電子郵件地址。我在w3schools,上輸入了「[email protected]」,但它沒有編碼「@」或「。」。我正在使用encodeURI(),並有相同的結果。到底是怎麼回事?URLEncode - 讓它工作如何我想要

至少,我認爲它沒有編碼,因爲我在Firebug Net標籤看到:

GET http://dev:8989/SJMUserManager/Service/Index/[email protected]

我期望看到

GET http://dev:8989/SJMUserManager/Service/Index/bmackey%40foo%2Ecom

+6

[請不要光顧W3Schools的(http://w3fools.com) – Pointy 2011-03-21 14:53:51

+1

的'@'當我嘗試時被編碼爲「%40」。點不是。你可以嘗試encodeURIComponent()來獲得你所需要的。 – 2011-03-21 14:56:55

+0

@Pointy - 感謝信息是有幫助的,但只是稍微適用於這個問題。 「我正在使用encodeURI()並具有相同的結果」。 – 2011-03-21 15:14:54

回答

4

@.不是HTTP URI的特殊字符。

需要編碼的字符包括空格(變成+),+本身和%,它們用於十六進制編碼。

正常ASCII範圍32-127以外的其他字符以及該範圍內的各種其他字符使用該十六進制編碼%

爲了正確處理,您應該考慮在用戶提供的URI部分使用encodeURIComponent(),但只有。如果你用這種方式編碼整個URI,你會得到一個無效的URI。

2

您可以嘗試使用encodeURIComponent代替。

encodeURIComponent('GET http://dev:8989/SJMUserManager/Service/Index/[email protected]') 

返回:

"GET%20http%3A%2F%2Fdev%3A8989%2FSJMUserManager%2FService%2FIndex%2Fbmackey%40foo.com" 
相關問題