URL編碼

一個完整的請求地址

RFC 1738規定:"只有字母和數字[0-9a-zA-Z]、一些特殊符號"$-_.+!*'(),"[不包括雙引號]、以及某些保留字,才能夠不通過編碼直接用於URL。"chrome

http://[username:password@]www.host.com[/contextPath]/servletPath/pathInfo?name=中國
contextPath上下文路徑,若是部署在根目錄下,則省略上下文路徑。瀏覽器

網址路徑中包含漢字、查詢字符串包含漢字、在已打開的網頁上,直接用Get或Post方法發出HTTP請求、Ajax調用的URL包含漢字
例如:
http://localhost/上下文路徑/servlet路徑/路徑信息?name=中國服務器

Request URL: http://localhost/**%E4%B8%8A%E4%B8%8B%E6%96%87%E8%B7%AF%E5%BE%84**/*servlet%E8%B7%AF%E5%BE%84*/**%E8%B7%AF%E5%BE%84%E4%BF%A1%E6%81%AF**?name=*%E4%B8%AD%E5%9B%BD*函數

方法 名稱 原始值 瀏覽器編碼後 服務器是否解碼 解碼後
getContextPath() contextPath 上下文路徑 %E4%B8%8A%E4%B8%8B%E6%96%87%E8%B7%AF%E5%BE%84
getServletPath() servletPath servlet路徑 servlet%E8%B7%AF%E5%BE%84 /servlet路徑
getPathInfo() pathInfo 路徑信息 %E8%B7%AF%E5%BE%84%E4%BF%A1%E6%81%AF /路徑信息
getQueryString() queryString name=中國 name=%E4%B8%AD%E5%9B%BD name=中國

Firefoxchrome 測試,中文字符瀏覽器採用UTF-8編碼並加%。測試

escape()不能直接用於URL編碼,它的真正做用是返回一個字符的Unicode編碼值。除了ASCII字母、數字、標點符號"@ * _ + - . /"之外,對其餘全部字符進行編碼。在\u0000到\u00ff之間的符號被轉成%xx的形式,其他符號被轉成%uxxxx的形式。對應的解碼函數是unescape()。編碼

encodeURI()是Javascript中真正用來對URL編碼的函數。
它着眼於對整個URL進行編碼,所以除了常見的符號之外,對其餘一些在網址中有特殊含義的符號"; / ? : @ & = + $ , #",也不進行編碼。編碼後,它輸出符號的utf-8形式,而且在每一個字節前加上%code

相關文章
相關標籤/搜索