您的位置:首页 > 编程语言 > Java开发

JAVA乱码解决方案

2012-01-10 17:06 68 查看
最近有意将从前的JAVA书籍重新温习了一遍,发现自己在某些基础的概念上掌握的并不牢靠,很多都停留在“怎么做”上,

至于“为什么”这个问题没有得到深究,下面是我对WEB开发中对产生中文乱码的一些理解和解决办法。

1、理解



2、实例代码

@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");//针对GET方式无效
Map params = request.getParameterMap();
Iterator it = params.keySet().iterator();
String a = "";
while(it.hasNext()){
String s = (String)it.next();
a = request.getParameter(s);
//TOMCAT的默认编码方式为iso-8859-1,解码方式取决于浏览器
System.out.println(" UTF-8:" + new String(a.getBytes("iso-8859-1"),"UTF-8"));
System.out.println(" GBK:" + new String(a.getBytes("iso-8859-1"),"GBK"));
//如果设置了URLEncoding为"UTF-8"或"GBK",则可直接得到正确的参数,不会出现乱码
System.out.println(s + " :" + a);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getCharacterEncoding());
//不设置会出现乱码,可通过filter统一设定
//如果使用struts2,可通过<constant name="struts.i18n.encoding" value="UTF-8" />设定
request.setCharacterEncoding("UTF-8");
String a = request.getParameter("a");
System.out.println(a);
//TOMCAT默认为ISO-8859-1
System.out.println(response.getCharacterEncoding());
//不设置会出现乱码,可通过filter统一设定或者通过JSP的@page标记设定
//struts.i18n.encoding对jsp的响应流不起作用
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("UTF-8:中文1</br>");
out.println("GBK:  中文2</br>");
out.flush();
out.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: