1. 程式人生 > >ajax get提交中文引數亂碼

ajax get提交中文引數亂碼

    今天有個同事被jsp提交中文到後臺被擾人的亂碼問題給困擾了,大家七嘴八舌的看了半天試了各種方法也還找到原因,我也過去湊熱鬧看了下,同事說起先是用get方式提交,但始終是亂碼,但改用post提交用過濾器過濾後就沒問題了,但這裡又必須用get方式來提交。

    我在網上查了用get提交的方式,因為用get提交的話過濾器是不起作用的,引數是跟在url後面進行提交的,我採用了網上說得兩種辦法進行試驗。

  1.     在後臺採用new String(request.getParameter("***").getBytes("ISO-8859-1"),"UTF-8");進行轉碼,
  2.     在啟動的tomcat的server.xml中的Connector元素配置URIEncoding="UTF-8"。

    按照網上說得這兩種get提交的方式居然都不成功,有點鬱悶。

   後臺仔細查看了框架程式碼的提交方式,是用的ajax的http的提交方式。

   http.open("GET", url, true);
   http.onreadystatechange = handleSearchSuggest; 
   http.send(null);

   然後針對這個在網上查了一圈,果然很多人都碰到類似問題,我就採用其中有人說得辦法,在傳遞到後臺的含有中文的引數上加上encodeURIComponent(value),然後在後臺直接request.getParameter("value");就可以拿到中文了,並不需要再進行轉換了。

  至於有的人說的用兩次encodeURI(encodeURI(value)),然後再java.net.URLDecoder.decode(String str,String codename)這樣寫因為時間所限還沒試驗,按網上一些部落格的說法也是可行的。


   小結,對於get方式提交,對於ajax的get提交方式應特殊對待,不能像普通form的get提交方式那樣處理。

   參考文獻