- url轉(zhuǎn)義字符原理
如果表單的action為list.jsf?act=go&state=5
則提交時(shí)通過(guò)request.getParameter可以分別取得act和state的值。
如果你的本意是act='go&state=5'這個(gè)字符串,那么為了在服務(wù)端拿到act的準(zhǔn)確值,你必須對(duì)&進(jìn)行轉(zhuǎn)義
[預(yù)備知識(shí)]
對(duì)與通過(guò)get方式提交的url,瀏覽器在提交前首先根據(jù)http協(xié)議把一一個(gè)的參數(shù)及其值解析配對(duì)。而url的參數(shù)間是通過(guò)&分割的,這就是瀏覽器進(jìn)行參數(shù)配置的分割依據(jù)。如果你的參數(shù)值中含有&等url特殊字符,那么你在服務(wù)器端就會(huì)拿到意想不到的值。所以必須對(duì)url的特殊字符進(jìn)行轉(zhuǎn)義。
編碼的格式為:%加字符的ASCII碼,即一個(gè)百分號(hào)%,后面跟對(duì)應(yīng)字符的ASCII(16進(jìn)制)碼值。例如空格的編碼值是"%20"。
下表中列出了一些URL特殊符號(hào)及編碼
[十六進(jìn)制值]
1. + URL 中+號(hào)表示空格 %2B
2. 空格 URL中的空格可以用+號(hào)或者編碼 %20
3. / 分隔目錄和子目錄 %2F
4. ? 分隔實(shí)際的 URL 和參數(shù) %3F
5. % 指定特殊字符 %25
6. # 表示書簽 %23
7. & URL 中指定的參數(shù)間的分隔符 %26