`
sinye
  • 浏览: 219210 次
  • 性别: 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乱码学习 Java乱码学习

    Java 乱码问题一直是开发...总结来说,Java乱码问题需要从源头(文件编码)、编译过程、网络传输以及服务器处理等多个层面进行排查和设置。了解并掌握这些知识点,将有助于我们更好地预防和解决Java环境下的乱码问题。

    Java开发乱码问题解决方法汇总

    在本文中,我们将总结一些常见的Java开发乱码问题解决方法,希望能够为读者提供帮助。 1. 统一项目编码方式 乱码问题的根源之一是项目中的编码方式不统一。因此,在项目中统一使用一种编码方式是非常重要的。例如...

    Java乱码问题解决

    ### Java乱码问题详解与解决方案 #### 一、问题背景 在Java开发过程中,尤其是在处理中文字符时,经常遇到字符编码不一致导致的乱码问题。由于Java默认使用Unicode编码,而在中国大陆地区,常见的字符集为GB2312...

    Java 中文乱码问题

    总结一下,Java中文乱码问题的解决主要依赖于以下几个关键点:正确设置源代码的编码、指定JVM的字符编码、理解并正确处理文件和网络通信的字符编码。通过细心的检查和配置,大部分乱码问题都能得到解决。同时,了解...

    java传值中的乱码

    ### Java传值中的乱码问题及最简易的解决方法 在Java Web开发中,经常会遇到一个令人头疼的问题:客户端向服务器传递数据时出现乱码。这种情况不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨Java传值...

    java中文乱码问题解决

    "Java中文乱码问题解决" Java中文乱码问题是Java开发中常见的问题,尤其是在Web开发中,乱码问题会导致页面显示混乱,影响用户体验。解决乱码问题需要了解编码的基本原理和各种编码格式的区别。 编码的原因可以...

    java 中文乱码 处理

    ### Java中文乱码处理 在Java开发过程中,中文乱码问题常常令人头疼,尤其是在Web应用中,客户端提交的数据经常会出现编码不一致导致的乱码问题。本文将介绍几种解决Java中中文乱码的方法,希望能对您有所帮助。 #...

    Java中文乱码解决之道

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

    java读写csv文件,中文乱码问题

    下面我们将深入探讨如何在Java中正确地读取和写入CSV文件,以及解决中文乱码的问题。 1. **字符编码的理解**: - 在处理中文字符时,必须确保使用正确的字符编码,例如UTF-8。UTF-8是一种广泛支持的编码格式,可以...

    JAVA反编译文件解决中文乱码

    总结,解决JAVA反编译文件时的中文乱码问题,关键在于确定源代码的原始编码,并确保反编译工具支持该编码。同时,良好的编码规范和项目配置也是避免此类问题的重要措施。通过上述方法,开发者可以更顺利地进行Java反...

    java插入mysql中文乱码解决

    ### Java插入MySQL中文乱码解决 #### 一、问题背景 在使用Java应用程序与MySQL数据库交互的过程中,常常会遇到一个令人头疼的问题:中文字符在存储到数据库时出现乱码现象。这种现象通常发生在使用JDBC(Java ...

    java压缩zip文件解决中文乱码问题

    总结来说,处理Java中ZIP文件的中文乱码问题,关键在于明确指定字符集,通常是UTF-8,无论是使用Java内置的API还是第三方库。同时,理解文件系统的编码和压缩/解压过程中的字符编码转换也非常重要。通过这种方式,...

    Java生成pdf文件,解决中文乱码问题.pdf

    Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...

    java编程中乱码问题解决

    ### Java编程中乱码问题解决 在Java编程中,乱码问题是开发者经常遇到的一个难题,尤其是在处理中文或者其他非英文字符时。本文将详细介绍如何解决Java编程中常见的乱码问题,并提供具体的实例帮助读者理解。 ####...

    java处理中文乱码

    总结来说,处理Java中的中文乱码主要涉及字符编码的转换、请求处理器的定制以及过滤器的使用。在实际开发中,根据项目需求和所使用的框架,可以选择合适的方式来确保中文数据的正确显示和处理。同时,为了减少乱码...

    JAVA 解决Properties文件保存中文乱码

    总结,解决Java中Properties文件中文乱码问题的关键在于正确指定文件的编码。无论是保存还是读取,都需要确保与文件实际的编码一致。在处理这类问题时,了解和掌握不同的API以及它们的用法是至关重要的,这样才能...

    java配置过滤器,解决乱码

    首先,我们要理解Java乱码的根源。乱码通常出现在两个主要场景:输入(如POST表单数据)和输出(如JSP页面显示)。在Java Web应用中,数据可能以不同的字符集在客户端和服务器之间传递,如果编码不一致,就可能导致...

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

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

    java Socket与C#通信中中文乱码问题的解决方案

    总结起来,解决Java Socket与C#通信中中文乱码问题的关键在于: 1. **客户端**:确保使用`getBytes("UTF-8")`将字符串编码为UTF-8字节数组,然后通过Socket发送。 2. **服务器端**:在接收到数据后,使用`Encoding....

Global site tag (gtag.js) - Google Analytics