`

tomcat交互中编码细节

阅读更多
Java 虽然是采用 Unicode 字符的。但是在网络通信中,都是采用字节进行传输的,由于在传输时并没有告之 tomcat 使用什么编码,那么 tomcat 就会使用 ISO8859-1 的编码格式进行传输。

举个例子吧,比如我们要传输的字符串是“劳动节快到了”,这个串的 GBK 编码为:

c0cd b6af bdda bfec b5bd c1cb (GBK 是采用两个字节的,这里采用空格进行了分隔)

在网络传输中是以 Big-Endian 方式传送的,也就是一个字节一个字节地传,依次会这样:

c0 cd b6 af bd da bf ec b5 bd c1 cb

在 tomcat 接收到这些字节时,并不知道该如何去组装这些字节,默认就使用一个字节编码的 ISO8859-1 进行编码,得出的字符为:

Java codeÀ  Í  ¶  ¯  ½  Ú  ¿  ì  µ  ½  Á  Ë
c0 cd b6 af bd da bf ec b5 bd c1 cb


这很明显是不正确的,但是我们如果使用传输之前的编码进行组装的话,编码器就会根本字符集的特征将这些字节组装并编码成字符串了。像上面这个如果使用 new String(s.getBytes("ISO-8859-1"), "GBK") 的话,就会两个字节,两个字节的进行组装:

Java code 劳   动   节   快   到   了
c0cd b6af bdda bfec b5bd c1cb

页面传输时到达时是gbk编码的字节数组!如果传到Servlet,默认是用Iso对字节数组组装,这时会出现乱码!如果设置request.setCharactorEncoding这时就用特定的编码进行组装!!  

如果对编码格式熟悉的话,出现了乱码,那基本上只要看一下这个乱码的特征就会知道什么地方转码出现了错误。比如:

* 出现一些稀奇古怪的符号(没有一个是汉字的),这一般是 GBK 或者 UTF-8 采用 ISO8859-1 进行显示了。
* 如果出现稀奇古怪的符号,并夹杂着一些繁体或者简体汉字的话,这一般是 GBK 与 UTF-8 转码出现了错误。如果出现的字符数比原字符数多的话,那表明本该 UTF-8 的字符采用 GBK 进行转码了,如果出现的字符数比原字符数少的话,那表明本该 GBK 的字符采用 UTF-8 进行转码了

分享到:
评论

相关推荐

    基于Eclipse的Tomcat插件

    总之,基于Eclipse的Tomcat插件是Java Web开发者的得力助手,它简化了与Tomcat服务器的交互,提高了开发效率。通过熟练掌握这些插件的使用,开发者能够更专注于应用程序的开发,而不是服务器的管理细节。

    Tomcat与Java_Web开发技术详解4.pdf

    本书重点介绍的是Tomcat 5版本,虽然目前已有更新的版本如Tomcat 8和9等,但了解5版本的基本原理和技术细节仍然对理解整个Tomcat体系结构非常有帮助。 #### 二、Java Web基础知识 1. **Servlet**: - Servlet是一...

    eclipse+sql+tomcat+jdbc

    根据文件信息,我们需要构建一个使用Eclipse集成开发环境,结合JDBC(Java Database Connectivity)技术连接到SQL Server数据库的...在整个开发过程中,开发者需要独立完成包括环境配置、编码、测试等各个阶段的工作。

    经典的文件上传客户端和Tomcat服务端

    本项目名为"经典的文件上传客户端和Tomcat服务端",它涵盖了Android客户端和基于Java的Tomcat服务器之间的文件交互。这里我们将深入探讨相关知识点。 **Android 文件上传** 在Android平台上实现文件上传,主要涉及...

    Tomcat面试专题.pdf

    面试中,对Tomcat的理解和技术细节的掌握是评估开发者技能的重要方面。以下是对Tomcat关键知识点的详细讲解: 1. **Tomcat默认端口与修改** Tomcat默认监听的HTTP端口是8080。要修改这个端口,你需要编辑`conf/...

    图书馆管理系统jsp+tomcat+oracle

    3. 编码实现:利用JSP编写前端页面,结合Servlet处理业务逻辑,与Oracle数据库交互。 4. 测试调试:进行单元测试、集成测试,确保各模块功能正常。 5. 部署上线:将系统部署到Tomcat服务器,进行实际环境测试。 六...

    how tomcat works

    本章深入探讨了Tomcat中默认连接器的实现细节。 - **简介**:概述了默认连接器的功能和特点。 - **HTTP1.1的新特性**:列举了一些HTTP/1.1协议相对于早期版本的主要改进,如持久化连接、编码和状态码100的使用。 - ...

    how tom cat works中文PDF+源码

    4. **响应生成**:Servlet处理完请求后,生成响应内容,Tomcat负责将其编码并发送回客户端。 5. **线程管理**:Tomcat使用多线程模型处理请求,每个请求都会分配一个工作线程来处理,保证并发性能。 **源码分析** ...

    struts2配置文件传值中文乱码

    如果应用涉及数据库操作,还需检查数据库的字符集设置,确保与前端编码一致,避免在数据交互中引入乱码。 #### 4. 使用过滤器处理编码 除了配置文件,还可以在应用中添加过滤器(如`CharacterEncodingFilter`),...

    建筑材料租赁系统,后端框架SSM,前端框架LayUI,数据库MySQL,开发工具IDEA,Web服务器Tomcat.zip

    本文将围绕“建筑材料租赁系统”这一项目,深入探讨其背后的技术架构和实现细节,该项目采用SSM(Spring、SpringMVC、MyBatis)作为后端框架,LayUI作为前端框架,MySQL作为数据库,IDEA作为开发工具,并在Tomcat ...

    Webservice讲座

    在这个“Web服务讲座”中,我们将深入探讨在Tomcat服务器上使用AXIS库来实现Web服务的技术细节。 首先,我们来看标题中的“Tomcat下AXIS的Web Service”。AXIS是Apache软件基金会开发的一个开源工具,它简化了在...

    巧用 Jersey RESTful WebService框架解决文件上传乱码

    1. 配置服务器编码:在Web服务器(如Tomcat)的配置文件中,设置`URIEncoding`参数为`UTF-8`,例如在`server.xml`中的`Connector`元素添加`URIEncoding="UTF-8"`。 2. 设置Maven项目编码:在`pom.xml`文件中,可以...

    对Servlet 中 request.setEncoding("utf-8")的分析

    在本例中,`request`对象实际上是由Tomcat提供的`RequestFacade`类的一个实例,这个类实现了`HttpServletRequest`接口,起到了一个代理的作用,允许我们调用标准的Servlet API方法。 2. **RequestFacade与Request...

    Java音视频即时通讯源代码

    Java音视频即时通讯源代码是实现高效、稳定且...以上只是Java音视频即时通讯源代码中部分关键知识点的概述,实际项目会涉及到更多细节和技术。通过学习和理解这些技术,开发者能够构建出高效、可靠的音视频通讯应用。

    java 软件工具的配置和修改

    总的来说,配置和修改这些工具涉及到多个层面,不仅需要理解每个工具的功能和用法,还要掌握它们之间的交互和配置细节。这要求开发者具备一定的系统配置和问题排查能力,以确保开发环境的稳定性和高效性。在实际工作...

    Eclipse下Steps开发环境配置方法.doc

    - 此步骤虽略去具体细节,但通常涉及在Eclipse的Server视图中添加新的Tomcat服务器实例,并指定其位置,为后续的部署奠定基础。 **4. 集成CVS服务器** - 在WTP中配置CVS服务器,这一步对于团队协作至关重要,...

    SSH开发总结

    - **Tomcat配置**:在Tomcat的`server.xml`中添加`URIEncoding="UTF-8"`到HTTP和AJP连接器配置中,确保请求的URL编码为UTF-8。同时,在`web.xml`中添加`SetCharacterEncodingFilter`,指定请求参数的编码也为UTF-8。...

    使用struts,hibernate做的一个小题目

    在这个系统中,可能有一个或多个Filter用于权限控制、字符编码转换、日志记录等任务。 5. **jstl1.1**:JSTL提供了一系列标签库,使得JSP页面更加简洁,避免过多的脚本let和Java代码。在这个项目中,可能使用了JSTL...

    php调用java的代码

    LAP使得PHP可以通过HTTP请求与Java应用进行交互,而无需直接处理底层网络细节。 “run_msgq.sh”文件名暗示了消息队列(Message Queue)的使用,这是一种异步通信机制。通过消息队列,PHP可以发送请求到队列,Java...

Global site tag (gtag.js) - Google Analytics