`
sinye
  • 浏览: 217607 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于java乱码的一些总结

    博客分类:
  • java
阅读更多

Java乱码是因为JavaJSP源文件的保存方式是基于字节流的,如果JavaJSP编译成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=utf-8"%>

接受中文参数
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,如MicrosoftSQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如mysql驱动:jdbc:mysql://localhost/MYAPPS?useUnicode=true&characterEncoding=GBK

 

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

分享到:
评论
5 楼 alanlhy 2011-04-24  
刚好遇到此问题
4 楼 sinye 2011-02-26  
landslide 写道
呃,说好的统一呢

页面jsp保证是utf-8编码
<%@ page contentType="text/html; charset=GBK"%>


谢谢,写的急,笔误了。
3 楼 qdpurple 2011-02-22  
我们习惯把eclipse默认编码都设为UTF-8, 不知大家也是用UTF-8吗
2 楼 SkgHimT 2011-02-21  
在传递jsp传递参数过程中加上一个过滤器(将传递的信息编码格式一致化),不也能处理乱码问题吗?
以前在学校的时候都是这样做的~
不知道这样做是否对效率有影响。
1 楼 landslide 2011-02-21  
呃,说好的统一呢

页面jsp保证是utf-8编码
<%@ page contentType="text/html; charset=GBK"%>

相关推荐

    关于java乱码学习的一点总结

    个人的一点关于JAVA乱码的整理。不知对大家有没有用

    Java中文乱码解决之道

    阅读许多关于中文乱码的解决办法的博文后,发现对于该问题我们都(更加包括我自己)没有一个清晰明了的认识,于是LZ想通过这系列博文(估计只有几篇)来彻底分析、解决java中文乱码问题,如有错误之处望各位同仁指出...

    linux下java生成图片乱码问题.doc

    最近在做一个java生成图片的功能,由于系统字体原因,在linux上生成出来的中文是乱码,所以在网上找了N多的资料,最终才把问题解决。很多人说把字体放到jdk安装目录下的Jre的fonts目录下,根本是无效的。且Centos6和...

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

    解决乱码的各种方法总结,包括数据库的解决方案,个人觉得比较详细有使用价值

    java乱码问题的解决

    当你编写代码时是不是也遇到了乱码问题 尤其是jquery post提交 来下载看看吧 你会有所收获 (个人总结 针对不同情况)

    JAVA开发中各种中文乱码问题

    改文档详细总结了JAVA开发中的各种常见的中文乱码,比如JSP页面的中文乱码,数据库的中文乱码等。

    解决java所有中文乱码集合

    根据自己平时遇到的问题,以及根据资源,总结出了所有中文乱码问题,包括乱码问题的方式,分析乱码原因,以及给出几种乱码解决办法,基本上解决所有乱码问题,简单易懂,有截图。

    j2ee乱码处理总结

    Java j2EE项目中,乱码问题,主要出现在三个方面: 1.中文展现的乱码问题 2.中文写入数据库乱码问题 3.参数传递的乱码问题 本文档对这三部分如何处理乱码都有详细的说明。

    java web开发解决乱码问题

    解决在javaweb开发的过程中遇到的乱码问题,纯属个人在学习中的总结。

    java解析文件乱码解决

    非常不错的资料,自己总结的东西,希望有帮助

    java,jsp,servlet 乱码

    乱码总结,其中包括java,servlet,jsp,struts2,等,属个人总结,仅提供参考

    jsp中文乱码总结包括 ajax中文乱码

    针对java web开发方面中文乱码情况的总结,基本各种情况都有了!

    多文件上传例子(解决中文乱码)

    总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在jsp里用java.net.URLDecoder.decode(request....

    java中文乱码问题处理集锦

    这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!

    java中常见的中文乱码总结

    本文主要介绍了java中常见的中文乱码以及解决方法,具有很好的参考价值。下面跟着小编一起来看下吧

    Java web工程乱码解决方案

    这里总结了我在j2ee开发过程中,中文乱码的解决方案。希望能够帮到大家!

    java重点之StringBuilder讲解

    这是java学习中,总结出来的关于StringBuilder的一些内容,供学习参考。

    web项目乱码问题 jsp乱码问题解决

    web项目中中文乱码问题总结,几解决方法。

    Java 中文乱码

    此文档总结出了Java开发中遇到的绝大多数乱码的情况,并给出了相应的解决方法。

    WEB开发乱码处理总结

    WEB开发中总会遇到乱码,这些都是经常出现,但是很烦的问题,处理起来并不难

Global site tag (gtag.js) - Google Analytics