问题描述
我在jsp页面中将输入的用户名的密码提交到servlet中,提交时用户名输入的是中文,这是我获得参数的代码StringuserName=request.getParameter("userName");我用userName=newString(userName.getBytes("gb2312"),"UTF-8")来设置编码,但为什么还会出现乱码
解决方案
解决方案二:
我说一下几种解决乱码的方式:你看一下对你有没有用:1.在页面设置编码方式:UTF-82.写一个字符编码过滤器,过滤器中写下如下代码即可://将对象转换为HTTPHttpServletRequestrequest=(HttpServletRequest)arg0;HttpServletResponseresponse=(HttpServletResponse)arg1;//设置字符编码属性request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");3.在tomcat设置端口号的地方的后面写下如下代码:URIEncoding=“UTF-8”4.在传参数之前,先将字符转码:URLEncoder.encode("要传递的参数","UTF-8");5.先将字符转换成进制码然后要用的时候在转换回来
解决方案三:
request.getParameter默认获得的汉字是iso-8859-1的。楼主可试试iso-》gb或iso-》utf
解决方案四:
顶一下1楼,顺便说一下,有的时候提交时,如果method是get也会出现乱码,要设置为post
解决方案五:
写个过滤器直接解决问题。
解决方案六:
可能是你的浏览器使用的编码和你jsp页面使用的不一致,你在页面中对请求进行统一编码试试看。<%request.seCharacterEncoding("gb2312");%>
解决方案七:
呵呵,又是编码问题,get传送汉字,然后用request获取后再用newString()转码是不行的,因为request对象从异构的网络中接收到数据后已经就做了一次转码,取出数据后再用newString()转一次,乱上加乱。用我给以下贴中的回复,在request内部进行转码:(注意贴中第1楼的代码)。将项目所有编码都统一到utf-8,包括html编码声明、存储的物理文件编码(这个很重要,设置Eclipse、Dreamweaver这编辑器的编码格式为utf-8)、web.xml编码过滤器,然后配上重写request来处理get方式接收的汉字,一般就很少再出现编码乱的问题。
解决方案八:
http://youzi530.blog.163.com/blog/static/44471702200881801023405/
解决方案九:
字符乱码的最好解决方案是:把所有的字符编码设置成相同的编码(JSP、过滤器、IDE中相应文件的编码、服务器的URIEncode,建议用utf-8)否则的话,手动转来转去很容易乱套。
解决方案十:
支持过滤器方式,简单直接
解决方案十一:
仅仅在取参数时newString不会有效果,你输入参数的页面,你输入的是中文,此时默认用ISO-8859-1编码,也就是此时的汉字经过编码后再通过getBytes()不是适用了。仅供参考~
解决方案十二:
packagecom.first.struts.filters;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;publicclassSetCharacterEncodingFilterimplementsFilter{privateStringencoding;privateFilterConfigfilterConfig=null;publicvoiddestroy(){this.encoding=null;this.filterConfig=null;}publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{request.setCharacterEncoding(this.encoding);chain.doFilter(request,response);}publicvoidinit(FilterConfigfilterConfig)throwsServletException{this.encoding=filterConfig.getInitParameter("encoding");}--------------------------------------------------------------------------------配置文件web.xml<filter><filter-name>SetCharacterEncoding</filter-name><filter-class>com.first.struts.filters.SetCharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>GBK</param-value></init-param></filter><filter-mapping><filter-name>SetCharacterEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>