我有一些UTF-8的問題。我的客戶(在GWT實現)提出請求,以我的servlet,在URL中的一些參數應用,如下:request.getQueryString()似乎需要一些編碼
http://localhost:8080/servlet?param=value
當我取回URL servlet的,我有一些問題,UTF-8字符。 我用這個代碼:
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String reqUrl = request.getRequestURL().toString();
String queryString = request.getQueryString();
System.out.println("Request: "+reqUrl + "?" + queryString);
...
所以,如果我把這個網址:
http://localhost:8080/servlet?param=così
的結果是這樣的:
Request: http://localhost:8080/servlet?param=cos%C3%AC
我能做些什麼來設置正確的字符編碼?
#1中的URIEncoding設置位於Tomcat的server.xml中。其他servlet容器應合理地具有相同的設置。 – schematic 2010-06-12 17:10:48
對於#2,您不能再使用request.getParameter()方法,因爲該方法將檢索錯誤解碼的參數。您必須將解碼後的查詢字符串(由getQueryString()生成)手動解析(例如,按照&符號分割字符'&',然後將結果字符串拆分第一個等號'=')。 – schematic 2010-06-12 17:13:52
我遇到了server.xml設置的問題。在Windows機器上它工作正常,但在我們生產的基於Red Hat的機器上,Tomcat似乎忽略了server.xml設置。我們最終不得不實現我們自己的查詢參數解析器,它使用UTF-8明確解碼它。 – Herms 2010-06-12 17:29:01