String value = request.getParameter("name");//对于GET请求,相当于浏览器按utf-8编码,tomcat按iso-8859-1解码,因此乱码//重新将乱码按iso-8859-1编码,再使用utf-8解码
value =newString(value.getBytes("iso-8859-1"),"utf-8");
System.out.println(value);
OutputStream os = response.getOutputStream();//直接以字节写入响应体中,tomcat不会对字节进行编码,浏览器按默认的字符集GBK进行解码,所以不再出现乱码
os.write("吴思含".getBytes("GBK"));
方案二
PrintWriter out = response.getWriter();
String data ="博客";//因为tomcat默认使用iso-8859-1对http数据包进行编码,而浏览器会按操作系统字符集GBK进行解码,所以预先按GBK进行编码,再按iso-8859-1解码,这样解到浏览器时正好是GBK,可以正常显示//先对字符串data按GBK编码,然后按iso-8859-1解码,形成乱码A,之后tomcat会按默认的iso-8859-1对A进行编码,最后浏览器按GBK进行解码,相当于再次得到了正确的data字符串
out.println(newString(data.getBytes("GBK"),"iso-8859-1"));
方案三
//对头中汉字无效
response.setCharacterEncoding("gbk");
方案四
//注意对头中汉字无效//必须写在获取流上面,charset值设为任何支持中文的字符集都行
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
String data ="博客";
out.println(data);