1、发生中文乱码的状况有如下三种:html
1.表单form的两种提交出现中文乱码java
① get提交 ② post提交浏览器
2.超连接(本质是get提交)出现中文乱码服务器
三、sendRedirect(发生乱码)工具
2、乱码产生的缘由:post
浏览器编码 utf-8 发送请求给服务器是会产生编码不一致的状况
因此在发送请求是先定义编码,就能很好的解决编码的问题测试
3、解决乱码的几种简单方式:编码
post方法提交:解决方案以下: request.setCharacterEncoding(“utf-8”);spa
get方法使用该方法的时候仍是不能解决问题依然出现乱码,针对get提交所用的处理方法.net
封装成为一个工具类来处理:
public class Mytool{ public static String getNewString(String str){ String newString=""; try{ newString= new String(str.getBytes("iso-8859-1"), "utf-8"); }catch(Exception e){ e.printStackTrace(); } return newString; } }
调用工具类:
String u = request.getParameter("username");
Mytool.getnewString(u);
超连接的提交方式和get的提交处理是同样的
4、兼容浏览器的版本信息问题,若是IE6或如下版本,第2、三种会出现乱码
超连接乱码 和 sendRedirect乱码
String info=java.net.URLEncoder encode("你好吗.jpg",“utf-8”);
<a href="" + info>测试</a>
response.sendRedirect("servlet地址 ?username= " + info);
后记:
在服务器端是中文,在response的时候,也要考虑浏览器是否显示正确response.setCharacterEncoding(“utf-8”);response.setContentType("text/html;charset=utf-8")