request.setCharacterEncoding("UTF-8");
在服务器端,要转变请求的字符串编码,用request.setCharacterEncoding("UTF-8");这个方法要放在jsp代码的request.getParameter()方法前面。如
<%@page contentType="text/html" pageEncoding="GBK" session="false" %><% request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username"); System.out.println("userName;--->" + username); response.setCharacterEncoding("UTF-8"); System.out.println("---------------------------------------"); username = request.getParameter("username"); System.out.println("after request set encoding userName;--->" + username); } %>
如果不是getParameter()前面,比如放在
String username = request.getParameter("username"); System.out.println("userName;--->" + username);
后面的话,request.setCharacterEncoding("UTF-8");这句转码等于没转,具体原因还没研究清楚。不过,可以放在String queryString = request.getQueryString()的后面,比如:
<%@ page contentType="text/html;charset=GBK" %><% String queryString = request.getQueryString(); String reqEnc = getQueryValue(queryString,"req_enc="); if(reqEnc!=null){ request.setCharacterEncoding(reqEnc); } String respEnc = getQueryValue(queryString,"resp_enc="); if(respEnc!=null){ //out.println(respEnc); response.setCharacterEncoding(respEnc); } %><%!String getQueryValue(String queryString,String key){ if(queryString==null || queryString.length()==0)return null; int reqIdx = queryString.indexOf(key);//req_enc=utf-8&resp_enc=gbk String enc = null; if(reqIdx!=-1){ reqIdx = reqIdx+key.length(); int endIdx = reqIdx; for (; endIdx < queryString.length() && queryString.charAt(endIdx)!='&'; endIdx++) { } if(endIdx>reqIdx){ enc = queryString.substring(reqIdx,endIdx); if(!enc.equalsIgnoreCase("gbk") && !enc.equalsIgnoreCase("utf-8")){ enc = null; }else{ System.err.println("error :"+key+" is "+ enc); } } } return enc; }%>
request.setCharacterEncoding(reqEnc);就是要放在request.getParamter()方法前面才会生效。
相关推荐
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); ListUserInfo(request, response); out.flush(); out.close(); } private ...
request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); chain.doFilter((ServletRequest) Proxy.newProxyInstance(this....
<% request.setCharacterEncoding("gb2312"); %> 请求方式:<%= request.getMethod() %> 源地址:<%= request.getRequestURI() %> 协议版本:<%= request.getProtocol() %> 上下文路径:<%= request....
response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.print("{ \"error\": \"session_expired\", \"message\": \"Session已过期,请重新登录\" }"); out.flush(); return ...
req.setCharacterEncoding("utf-8"); // 设置请求字符编码为UTF-8 } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 从Session中获取用户信息 ...
<% request.setCharacterEncoding("UTF-8"); %> // 获取表单参数并验证用户 String username = request.getParameter("username"); String password = request.getParameter("password"); if (isValidUser...