1. 程式人生 > >中文亂碼 URLEncode之後,後臺獲取仍是亂碼問題詳解

中文亂碼 URLEncode之後,後臺獲取仍是亂碼問題詳解

在做專案時遇到一個問題,是對於含中文字元的引數進行get提交,如果不對這些引數進行處理的話,直接提交會有問題的,因為中文為非ASCII碼,而get提交的話需要全部為ASCII碼基本表中的字元,ASCII碼基本表中一共就那128個(這些只是常用的,在鍵盤上看得見的字元,像字母,一些符號什麼的,全部的一共有256個,當然其他的一般用不到)。所以想要傳輸中文(當然也包括日文)這種非ASCII碼的,需要對其進行轉換一下,轉換為瀏覽器地址認識的ASCII碼,所以在java中可以使用java.net包下的URLEncoder類,有個encode()方法進行編碼(js中也可以),其中有兩個引數,第一個為需要編碼的帶中文的(或者其他非ASCII碼)引數,第二個引數需要指定編碼的格式,一般都用utf-8,不同編碼的格式編碼之後的字元不一樣,所以這裡需要指定一下,解碼的時候需要指定同樣的格式解碼,於是對於url後面的引數進行encode之後提交到後臺,在java後臺接收之後依然是亂碼,使用request.setCharacterEncoding("utf-8"),同樣沒作用,後經查閱資料才知道,request的setCharacterEncoding方法只對post提交的方式起作用,而且要在所有的getParameter之前才可以,而對於get提交的方式進行解碼的方法,在tomcat根目錄下,有個conf資料夾,裡面有server.xml中有個配置的地方,如下