关于java乱码的一些总结

转载 2012年03月22日 18:26:41

Java乱码是因为Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。在这里,总结一下java乱码的一些常见情况

 

1.Javascript传参乱码:

在浏览器端对要传递的中文参数进行编码处理.代码如下: 
xmlhttp.open("POST",url,true); //请求参数初始化 
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因为请求方式为POST,所以这里要设置请求头.(如果请求方式为GET,此句代码可以省略) 
xmlhttp.send("name="+encodeURI(encodeURI("星期日"))); //向服务器端发送参数 
在服务器端代码:

页面jsp保证是utf-8编码

<%@ page contentType="text/html; charset=GBK"%>

接受中文参数
PrintWriter out = response.getWriter(); //得到response的输出流对象 
String name1 = request.getParameter("name"); //得到KEY为"name"的请求参数 
String name = URLDecoder.decode(name1,"utf-8"); //对得到的参数进行解码 
out.print(name); //向浏览器端发送数据

 

2.JSP与页面参数之间的乱码
       JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("UTF-8") 。
    如果在JSP将变量输出到页面时出现了乱码,可以通过设置response.setContentType("text/html;charset=UTF-8")。

JSP页面乱码通常只要在页面开始地方用上面代码指定字符集编码即可。如果还不行,那么请用下面这句话来转换 str=new String(str.getBytes("ISO-8859-1"),"页面编码方式"); 

 

3.热链接传参乱码

在传参的jsp对中文进行编码:href="new.jsp?name=java.net.URLEncoder.encode("链接")";

在接受的jsp对中文进行转码:String str = URLDecoder.decode(request.getParameter("name "), "utf-8");

 

4.Java与数据库之间的乱码 
  大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如mysql驱动:jdbc:mysql://localhost/MYAPPS?useUnicode=true&characterEncoding=GBK。

 

5.Java与文件/流之间的乱码
  Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的FileReader和FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。在这种情况下,建议使用FileReader和FileWriter的父类:InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。

JAVA/JSP中文乱码解决方案总结

  • 2014年06月22日 09:21
  • 478KB
  • 下载

java中form以post、get方式提交数据中文乱码问题总结

一:form在前台以post方式提交数据:     浏览器将数据(假设为“中国”)发送给服务器的时候,将数据变成0101的二进制数据(假设为98 99)时必然要查码表,浏览器以哪个码表打开网页,浏览...
  • wish_j
  • wish_j
  • 2016年06月15日 11:12
  • 1455

java中文乱码解决之道(九)—–总结

乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了。LZ之所以写这个系列博客就是因为遇到...
  • chenssy
  • chenssy
  • 2015年01月30日 10:47
  • 10044

Java httpservletresponse 中的sendRedirect()方法的重定位乱码的总结

最近httpservletresponse 中的sendRedirect()的方法,测试其中文乱码。 测试方法是用一个简单的登录界面Login.java(纯servlet的),登录成功的话,在Log...

Java-MySQL中文乱码编码问题总结

转载自:http://blog.csdn.net/Zhaozetu/article/details/8681350 Java-MySQL中文乱码编码问题总结 太多次遇到这个问题,每次都...

Java Web项目中解决中文乱码方法总结

第一种情况:调用jsp页面中文显示乱码 问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码。 解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然...

java中文乱码解决之道(九)—–总结

乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了。LZ之所以写这个系列博客就是因为遇到...

Java Web 中文乱码问题总结

java web 乱码

java 中文乱码 总结

1.JavaScript 传参乱码 2.JSP与页面参数传参乱码 3.链接传参乱码 4.数据库读取乱码 5.Java与文件/流之间的乱码 本文转自:http://ykko2009.blog....

Java 关于中文乱码处理的经验总结

为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程。记得之前学习C#的时候...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于java乱码的一些总结
举报原因:
原因补充:

(最多只允许输入30个字)