JAVA中几种常见的编码格式及含义:
ASCII 码
学过计算机的人都知道 ASCII 码,总共有 128 个,用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。
ISO-8859-1
128 个字符显然是不够用的,于是 ISO 组织在 ASCII 码基础上又制定了一些列标准用来扩展 ASCII 编码,它们是 ISO-8859-1~ISO-8859-15,其中 ISO-8859-1 涵盖了大多数西欧语言字符,官网:www.fhadmin.org 所有应用的最广泛。ISO-8859-1 仍然是单字节编码,它总共能表示 256 个字符。
GB2312
它的全称是《信息交换用汉字编码字符集 基本集》,它是双字节编码,总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。
GBK
全称叫《汉字内码扩展规范》,是国家技术监督局为 windows95 所制定的新的汉字内码规范,它的出现是为了扩展 GB2312,加入更多的汉字,它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字,它的编码是和 GB2312 兼容的,也就是说用 GB2312 编码的汉字可以用 GBK 来解码,并且不会有乱码。
GB18030
全称是《信息交换用汉字编码字符集》,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与 GB2312 编码兼容,这个虽然是国家标准,但是实际应用系统中使用的并不广泛。
UTF-16
说到 UTF 必须要提到 Unicode(Universal Code 统一码),ISO 试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字典是多么的复杂,关于 Unicode 的详细规范可以参考相应文档。Unicode 是 Java 和 XML 的基础,下面详细介绍 Unicode 在计算机中的存储形式。
UTF-16 具体定义了 Unicode 字符在计算机中存取方法。UTF-16 用两个字节来表示 Unicode 转化格式,这个是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是 16 个 bit,官网:www.fhadmin.org 所以叫 UTF-16。UTF-16 表示字符非常方便,每两个字节表示一个字符,这个在字符串操作时就大大简化了操作,这也是 Java 以 UTF-16 作为内存的字符存储格式的一个很重要的原因。
UTF-8
UTF-16 统一采用两个字节表示一个字符,虽然在表示上非常简单方便,但是也有其缺点,有很大一部分字符用一个字节就可以表示的现在要两个字节表示,存储空间放大了一倍,在现在的网络带宽还非常有限的今天,这样会增大网络传输的流量,而且也没必要。而 UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以是由 1~6 个字节组成。
UTF-8 编码规则:
1.如果一个字节,最高位(第 8 位)为 0,表示这是一个 ASCII 字符(00 – 7F)。可见,所有 ASCII 编码已经是 UTF-8 了。
2.如果一个字节,以 11 开头,连续的 1 的个数暗示这个字符的字节数,例如:110xxxxx 代表它是双字节 UTF-8 字符的首字节。
3.如果一个字节,以 10 开始,表示它不是首字节,需要向前查找才能得到当前字符的首字节
不同编码格式的比较
对中文字符后面四种编码格式都能处理,GB2312 与 GBK 编码规则类似,但是 GBK 范围更大,它能处理所有汉字字符,所以 GB2312 与 GBK 比较应该选择 GBK。UTF-16 与 UTF-8 都是处理 Unicode 编码,它们的编码规则不太相同,相对来说 UTF-16 编码效率最高,字符到字节相互转换更简单,进行字符串操作也更好。它适合在本地磁盘和内存之间使用,可以进行字符和字节之间快速切换,如 Java 的内存编码就是采用 UTF-16 编码。但是它不适合在网络之间传输,官网:www.fhadmin.org 因为网络传输容易损坏字节流,一旦字节流损坏将很难恢复,想比较而言 UTF-8 更适合网络传输,对 ASCII 字符采用单字节存储,另外单个字符损坏也不会影响后面其它字符,在编码效率上介于 GBK 和 UTF-16 之间,所以 UTF-8 在编码效率上和编码安全性上做了平衡,是理想的中文编码方式。
中文乱码解决方案:
1.tomcat的自带编码是ISO-8859-1的格式,是不兼容中文的编码的。采用相同的格式去接收(ISO-8859-1),然后用能解析的编码(utf-8)去转换。处理之后再发往前台。发往前台的时候需要设置:
res.setContentType("text/html;charset=utf-8");//设置页面的字符编码,解决界面显示中文乱码的问题;
res.setContentType("text/html;charset=utf-8");//设置页面的字符编码,解决界面显示中文乱码的问题;
2.req.setCharacterEncoding("utf-8");//必须写在第一位,因为采用这种方式去读取数据,否则数据会出错。
3.Spring提供了一个CharacterEncodingFilter过滤器,可以用于解决乱码问题。
CharacterEncodingFilter使用时需要注意一下问题:
表单数据以POST方式提交;
在web.xml中配置CharacterEncodingFilter过滤器
页面编码和过滤器指定编码要保持一致
CharacterEncodingFilter配置示例:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param=name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上为自己写代码过程中遇到问题查资料及自己总结所写,所了解的就这些,解决方案应该还有。
相关推荐
在 JavaWeb 技术开发中,中文乱码问题是由于 Java 系统的输入、输出和操作系统的默认编码字符集不一致导致的。 Java 系统内部使用 Unicode 来表示字符,但是在实际应用中,由于应用程序的运行环境不同,和各个本地...
1. **字符编码基础**:理解字符编码是解决问题的第一步。常见的字符集有GBK、GB2312(简体中文)、Big5(繁体中文)以及Unicode家族的UTF-8、UTF-16等。UTF-8是一种变长编码,可以兼容全世界几乎所有的字符,因此在...
下面将详细讲解三种解决JavaWeb中前后台中文乱码问题的方法。 ### 方法一:手动转换编码 这种方法涉及到对Tomcat服务器默认编码的理解。Tomcat默认使用ISO-8859-1编码,这种编码不支持中文字符。因此,当从前台...
JavaWeb 中文乱码问题是一个常见的问题,解决方法有多种,但都需要了解字符编码、响应头和 Servlet 输出机制等知识。本文将从Servlet 输出乱码、Servlet 文件下载乱码两方面详细讲解 JavaWeb 中文乱码的解决方法。 ...
总结来说,解决JavaWeb开发中的中文乱码问题,关键在于正确地设置字符编码。使用`HttpServletResponse`的`setCharacterEncoding`和`setContentType`方法可以确保数据在传输过程中的编码与接收端的解码保持一致,从而...
JavaWeb中字节乱码filter解决办法,其中包括tomcat各个版本进行字符设置.
JavaWeb中的乱码问题分析 JavaWeb应用程序中常见的乱码问题主要包括以下几个方面: - **用户输入乱码**:当用户在表单中输入中文时,如果客户端与服务器端的字符编码设置不一致,就可能导致乱码。 - **数据库交互...
本文将详细讲解如何利用过滤器来解决JavaWeb中的乱码问题。 首先,我们需要理解JavaWeb中的乱码产生的原因。当用户通过浏览器提交数据时,如果服务器接收到的数据编码与服务器内部处理编码不匹配,或者JSP页面的...
解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题.pdf
在JavaWeb开发中,解决中文输出乱码问题的步骤可以分为以下几个步骤: 第一步:设置页面的编码方式。在JSP页面中,可以使用;charset=UTF-8"%>指令来设置页面的编码方式。 第二步:在Servlet中设置响应的编码方式。...
关于处理Javaweb中中文乱码的问题[收集].pdf
接下来,我们将深入探讨这些关键组件以及它们在JavaWeb中的作用。 **JSP(JavaServer Pages)** JSP是Java的一种视图技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而生成动态内容。JSP文件在服务器上被编译...
### javaweb项目中乱码的处理 在Java Web项目的开发过程中,经常遇到的一个问题是字符乱码。这不仅影响用户体验,还可能导致数据错误。本文旨在详细介绍如何解决Java Web项目中的乱码问题,包括如何统一开发环境、...
总的来说,"javaweb前台+后台界面模板"为JavaWeb开发者提供了一套完整的解决方案,大大提升了开发效率。通过这些模板,开发者可以快速搭建出美观、实用的网站,同时也能减轻开发过程中的工作负担,将更多的精力投入...
通过上述步骤,我们成功地实现了一个过滤器来解决JavaWeb应用中的乱码问题。这种方法不仅能够提高代码的可维护性和可扩展性,还能显著减少出错的可能性。同时,由于过滤器是基于标准的Servlet API实现的,因此可以在...
### JavaWeb乱码问题分析与解决 #### 一、引言 在JavaWeb开发中,乱码问题是开发者经常遇到的问题之一。它不仅会影响用户体验,还会对数据的正确性造成潜在威胁。本文将针对请求乱码及响应乱码两种情况进行深入剖析...
JavaWeb 乱码问题终极解决方案 下面是从给定的文件中生成的相关知识点: 一、确认乱码发生的位置 在解决 JavaWeb 乱码问题时,首先要确认乱码的地方。出现乱码可能是浏览器显示问题,也可能是 Java 编码问题,也...
本文将详细讲解如何全面解决Javaweb中的乱码问题,确保网页内容正确显示。 #### 一、配置服务器端编码 首先,我们需要确保服务器端的字符编码设置正确。对于Apache Tomcat服务器,可以通过修改`conf/server.xml`...
JavaWeb前后台交互项目是基于Java技术栈进行Web应用程序开发的一种实践方式,它涉及到许多核心概念和技术。在本项目中,我们将重点探讨Object-Oriented Programming(OOP,面向对象编程)的应用,以及如何利用Java与...
总之,解决JavaWeb应用中文乱码问题需要全面了解字符编码机制,并在各个层次上保持一致性。理解每种解决方案的适用场景和优缺点,结合具体项目情况,采取适当的措施,可以有效避免和解决乱码问题。