总的来说,乱码的问题分了三种:
1、jsp页面上的中文乱码:
a、jsp页面显示乱码:
是因为浏览器默认支持的地"iso8859-1",是不支持中文的,因此要人工转换:
在文件头上加上:<%@page contentType="text/html;charset=gb2312" %>
就处理好了页面的中文显示.
b、jsp页面传递乱码:
这个问题,只要在传递参数时,把编码进行转换就可以了,具体代码:
<%
String str=newString(request.getParameter("str").getBytes("iso-8859-1"),"gb2312");
%>
就可以了。
2、servlet处理中文参数的乱码:
servlet中时常要接收jsp页面传过来的参数,它也要进行一次编码转换,转换方式是,在接收参数的方法内,接收参数之前加上:
request.setCharacterEncoding("gb2312");
这句话,是专门处理页面传过来的乱码处理问题,保证在这里接收时,能接收到正确的中文。
而还有一名话,也是要加的:
response.setContentType("text/html; charset=gb2312");
这句话,就是专门处理在servlet里,当参数经过处理后,要传到客户端显示时,要保证传送的是正确的中文。
这两句话,都得写在servlet里。
3、url传递的中文乱码问题:
使用url编码传递参数,可以实现客户端会话跟踪,如果参数中有中文字符,就会无法读取。
如这样的:
<a href="url.jsp?method1=第一个参数&method2=第二个参数">点击</a>,还有使用get方法时,会经过url,有中文时,也会出问题。
到url里传递时,中文就会出现问题,处理方法:
在接收参数的jsp文件里,接收参数时,使用以下方法处理一下:
<%
String method1=new String(request.getParameter("method1").getBytes("ISO8859-1"),"gb2312");
String method2=new String(request.getParameter("method2").getBytes("ISO8859-1"),"gb2312");
%>
就可以了。
转自:http://blog.csdn.net/lpz283929516/article/details/5031933