我对 java servlet 的 getParameter() 有一些问题,即使我在 server.xml 中正确设置了 Tomcat 的编码,它也不会解码参数。
<Connector port.. URIEncoding="UTF-8"/>
如果我解码原始查询,我会得到解码后的查询,但 getParamter 不会自行解码!
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("CharacterEncoding: "+ request.getCharacterEncoding());
System.out.println("Query String: "+ URLDecoder.decode(request.getQueryString(), "UTF-8");
System.out.println("Query param name: "+request.getParameter("name"));
...
我得到的结果如下:
字符编码:UTF-8
查询字符串:name=日本语一番ぜソFOX_&'">•«Ç€Ö™»_αß_iİıI_Администратор_cœur d´Ouchy__عربي
查询参数名称:æ¥æ¬èªä¸çªãã½ï¼¦ï¼¯ï¼¸_&'">â¢Â«Ãâ¬Ãâ¢Â»_αÃ_iİıI_дминиÑÑÑÑаÑоÑ_cÅur d´Ouchy_ð ð ðª_عØØØØØ ±Ø¨Ù
您可以清楚地看到查询和名称的值不一样!在我的 jsp 页面中,我使用 <%@page contentType="text/html; charset=UTF-8" %>