escape函式處理帶加號字串問題

lingxyd_0發表於2012-07-02

escape函式處理帶加號字串問題

 

在使用Jqery做ajax操作的時候有中文老是亂碼!必須的使用escape函式編碼才正常,encodeURIComponent等函式都不可以,這是因為url中字元被轉義,比如空格被編碼成加號,於是加號成了空格。我們可以手工將加號編碼成 %2B,eg:
escape(str).replace(//+/g, '%2B');這樣就可以了

(url轉義字元原理

如果表單的action為list.jsf?act=go&state=5

則提交時通過request.getParameter可以分別取得act和state的值。

如果你的本意是act='go&state=5'這個字串,那麼為了在服務端拿到act的準確值,你必須對&進行轉義

[預備知識]

對與通過get方式提交的url,瀏覽器在提交前首先根據http協議把一一個的引數及其值解析配對。而url的引數間是通過&分割的,這就是瀏覽器進行引數配置的分割依據。如果你的引數值中含有&等url特殊字元,那麼你在伺服器端就會拿到意想不到的值。所以必須對url的特殊字元進行轉義。
編碼的格式為:%加字元的ASCII碼,即一個百分號%,後面跟對應字元的ASCII(16進位制)碼值。例如 空格的編碼值是"%20"。
下表中列出了一些URL特殊符號及編碼
 

十六進位制值
1. + URL 中+號表示空格 %2B
2. 空格 URL中的空格可以用+號或者編碼 %20
3. / 分隔目錄和子目錄 %2F
4. ? 分隔實際的 URL 和引數 %3F
5. % 指定特殊字元 %25
6. # 表示書籤 %23
7. & URL 中指定的引數間的分隔符 %26
8. = URL 中指定引數的值 %3D

所以上述的action你應該寫成list.jsf?act=go%26state=5)

 

 

相關文章