java ee 中文乱码的问题
发生中文乱码的三种情况
(一) 表单form
Post 方法
直接在服务器中设置
request.setCharacterEncoding("utf-8");
get方法 自己转码,下面是方法.
public class HuanMa{
public static String getUTF8(String str){
String s="";
try {
s= new String(str.getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return s;
}
}
(二) 超链接
<a href=http://www.sohu.com?name=周海/>你好</a>
超链接的转码和表单中的get方法是一样的
(三) sendRedirect() 发生乱码
response.sendRedirect(“servlet地址?userName=周海”);
浏览器的utf-8 到 服务器时就变成了,"iso-8859-1" 了 , 当上面的方法运行后,服务器会返回“servlet地址?userName=周海” 但是返回的是"iso-8859-1"码. 浏览器会再次的进入 servlet地址.进入服务器.并且还是"iso-8859-1" 只要像 get方法 去转码就可以了
//这个是 response.sendRedirect()方法转码
//response.sendRedirect("/encoding/Main?user="+request.getParameter("user"));
response.sendRedirect("/encoding/Main?user="+new String("我是好人".getBytes("utf-8"),"iso-8859-1"));