1.jsp页面中文乱码
这种乱码最常见也最好解决
在page指令中添加页面内容和显示方式的设置,如下两种都可以:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page language="java" import="java.util.*" ContentType="text/html;charset=gb2312"%>
有人会问pageEncoding和ContentType有什么区别,简单说
contentType指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码
pageEncoding指定JSP编写时所用的编码
2.表单提交中文乱码
当用Request对象获取客户提交的汉字代码的时候,会出现乱码
Method=”POST”
接收数据的文件中要加入<% request.setCharacterEncoding("gb2312");%>
3.中文作为参数传递乱码
new String(userName.getBytes("ISO-8859-1"), "gb2312")这句代码是转换编码格式的关键,这种转码方式还可以用在读取数据库中文乱码的转码!但要是原来的字符编码不是ISO-8859-1时这个方法就会失效,出错!
try{
byte[] tempByte = gbStr.getBytes("GB2312");
uniStr = new String(tempByte,"ISO8859_1");
}catch(Exception ex){
}
你也可以在直接的转换,首先你将获取的字符串用ISO-8859-1进行编码,然后将这个编码存放到一个字节数组中,然后将这个数组转化成字符串对象就可以了,例如:
String str=request.getParameter(“字符串”);
Byte B[]=str.getBytes(“ISO-8859-1”);
Str=new String(B);
4.读取cookie时出现乱码
写入cookie时先编码
Cookie nameCookie = new Cookie("name", java.net.URLEncoder.encode(strname,"GB2312"));
读取cookie时再解码
String name=java.net.URLDecoder.decode(name,"GB2312")
写入cookie时先编码,将汉字编码转换为Unicode编码,解决汉字乱码问题
读取cookie时再解码,将Unicode编码转换为汉字编码,解决汉字乱码问题