Char流向byte流的错误转换
byte流向Char流的错误转换
通常程序与其他存储媒介交互时容易产生的乱码。
常见存储媒介,如数据库,文件,流等的存储方式都是基于字节流的,程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换。
我们常见的有可能存在转码的地方:
从页面form提交数据到程序 byte->char
从程序到页面显示 char->byte
从数据库到程序 byte->char
从java程序到数据库 char->byte
从文件到程序 byte->char
从程序到文件 char->byte
从流到java程序 byte->char
从java程序到流 char->byte
1、JSP与页面参数之间的乱码
JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。
解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或
request.setCharacterEncoding("gb2312")。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置
response.setContentType("text/html;charset=GBK")或response.setContentType
("text/html;charset=gb2312")解决。
我们通常的做法是在web.xml中配置过滤器:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.yeepay.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、Java与数据库之间的乱码
大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,mysql驱动:jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK。DB2数据库一般在安装或创建数据库时指定字符编码。
4.其他
解决Java乱码问题的关键在于在字节与字符的转换过程中,你必须知道原来字节或转换后的字节的编码方式,转
换时采用的编码必须与这个编码方式保持一致。
在与组件或者其它系统交互时,需要注意他们之间传递信息时的字符编码方式。
3、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 开发中的一种常见问题,主要是由于 Java 和 JSP 源文件的保存方式是基于字节流的,而编译成 class 文件过程中,使用的编码方式与源文件的编码不一致所致。在 Java ...
FORM表单中文乱码问题分析与解决 在 Web 开发中,中文乱码问题是一个常见的问题,尤其是在FORM表单传递参数时。这个问题的根本原因是对中文的编码与解码方式不一致。我们可以理解为对中文的加密与解密的密钥不一致...
解决 JSP 中文乱码问题 解决 JSP 中文乱码问题是一个很常见的问题,在 JSP 开发过程中,经常出现中文乱码的问题,可能一至困扰着大家。下面我们将详细讨论 JSP 中文乱码问题的成因和解决方法。 JSP 中文乱码问题的...
【Hadoop中文乱码问题详解】 在大数据处理领域,Hadoop是一个不可或缺的开源框架,它提供了分布式存储(HDFS)和分布式计算(MapReduce)的能力。然而,在处理包含中文字符的数据时,用户可能会遇到中文乱码的问题...
"sqlite3 for delphi 解决中文乱码问题"这个主题,正是针对这一问题提供了解决方案。这里我们将详细探讨SQLite3在Delphi中的应用,中文乱码的成因,以及如何通过自定义修改来解决这个问题。 首先,SQLite3是一个轻...
然而,在处理中文字符时,Ajax请求可能会遇到乱码问题,这主要是由于编码格式不一致或者处理不当导致的。本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**...
MySQL数据库系统中文乱码问题及解决方案 MySQL数据库系统中文乱码问题是指在使用MySQL数据库系统时,中文字符在存储、传输和显示过程中出现乱码的问题。这种问题的出现是由于字符集和编码方式的不兼容所致。 在...
soapUI输入中文显示为乱码 响应报文中文乱码问题解决方法
### Java中文乱码问题详解 #### 一、中文问题的来源与背景 计算机技术发展初期,操作系统主要支持单字节的ASCII字符集。随着全球化进程加快和技术进步,为支持多种语言,尤其是双字节编码的语言(如中文),提出了...
ODBC中文乱码问题解决方案 在使用ODBC对数据库进行中文字符串插入时,经常会遇到中文字符串显示乱码的问题。本文将通过对该问题的分析和解决方案,帮助读者更好地理解ODBC中文乱码问题的成因和解决方法。 一、问题...
本压缩包文件“ArcGIS 10.X导出dbf文件时出现中文乱码问题修复补丁.rar”就是针对这个问题提供的一种解决方案。 标题中提到的“ArcGIS 10.X”指的是ArcGIS软件的10.x版本系列,这个系列包括10.0、10.1、10.2直至...
首先,我们了解下中文乱码问题的背景。在处理包含中文字符的HTML文件时,如果没有正确设置编码或者在格式化过程中编码转换不当,就可能出现中文乱码现象。这不仅影响代码的可读性,也可能导致程序运行错误。因此,...
在IT领域,特别是Web开发中,Struts框架作为Java Web应用的一个重要组成部分,其在处理中文字符时常常遇到乱码问题。这个问题不仅影响了用户体验,也增加了开发者的调试难度。本文将深入探讨Struts框架中中文乱码的...
JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示乱码的现象。这种问题的解决办法可以从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交...
解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码...
Linux 下中文乱码问题解决方法 Linux 操作系统中,中文乱码问题是一个常见的问题,它是由系统集成的字符集引起的。由于不能正确地使用相对应字符的字符集,因此 OS 不能识别出文字,导致了乱码。解决这个问题的方法...
### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...
### jQuery + ASP AJAX 中文乱码问题解决方案 在开发基于jQuery和ASP的Web应用程序时,中文乱码问题可能成为困扰开发者的一大难题。特别是在使用Ajax进行前后端数据交互时,中文字符可能会出现乱码现象,影响用户...