(一).出现中文乱码的三种情况及解决方案
1.JSP页面显示时的中文乱码问题:
解决方案->用charset指令指定中文字符集正常显示中文
<%@page contentType="text/html;charset=gb2312"%>
2.JSP页面传递中文参数时的乱码问题:
解决方案->将<%String c=request.getParamter("username");%>改为
<%String c=new String(request.getParamter("username").getBytes("iso-8859-1"),"gb2312");%>
解释如下:首先要说明的是getBytes()是String的方法.
public byte[] getBytes(Charset charset)
使用给定的 charset 将此 String
编码到 byte 序列,并将结果存储到新的 byte 数组。
此方法总是使用此字符集的默认替代 byte 数组替代错误输入和不可映射字符序列。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder
类。
再来看看String的构造函数:
public String(byte[] bytes,Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String
。新 String
的长度是字符集的函数,因此可能不等于 byte 数组的长度。
此方法总是使用此字符集的默认替代字符串替代错误输入和不可映射字符序列。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder
类。
-
参数:
-
bytes
- 要解码为字符的 byte -
charset
- 要用来解码bytes
的 charset
3.Servlet处理中文参数时的乱码问题:
解决方案->在相应String username=request.getParamter("username");上如下代码:
request.setCharacterEncoding("gb2312");
request.setContentType("text/html;charset=gb2312"); //此句最关键
4.URL传递的中文参数的乱码问题:
解决方案->同第二种问题