众所周知,Tomcat是一个基于HTTP协议的Java应用服务器(非Web服务器),也是一个Servlet容器.

一般我们会基于使用HTTP协议的Post或Get方法来传递内容或参数,中间会涉及一些编解码操作,若不了解编解码过程可能会遇到乱码或解析问题.

接下来,我们来了解下调用方与tomcat交互时编解码过程:

  1. 调用方使用utf-8进行encode(可在代码层实现)
  2. tomcat使用iso8859-1进行decode(server.xml对应的Connector设置)
  3. servlet使用iso8859-1进行encode(webapp中web.xml中设置,注意:该方式仅tomcat 7.x 版本支持)
  4. 服务方使用utf-8进行decode(可在代码层实现)

提醒:不知道大家可注意到了,调用方与服务方最终使用的编码格式必须统一;另外,tomcat与servlet的编码格式也必须统一.当然我们因业务需要也可以使用其他编码格式(如:GBK),但建议为了跨平台和字符集兼容,建议统一使用UTF-8

那么当我们真的出现了编码问题如何解决呢?

1.修改JSP页面的Content-Type类型为UTF-8(<%@page    cotnentType="mime/type; charset=UTF-8" %>)

2.在server.xml中<Connector>设置URIEncoding="UTF-8"或useBodyEncodingForURI="true"

3.在web.xml字符编码过滤器中设置编码为UTF-8

4.把所有servlets的Content-Type设置为UTF-8

Tomcat 编码不一致导致乱码的更多相关文章

  1. <<< html编码中js和html编码不一致导致乱码

    在html中,有时把编码设置成UTF-8之后,引入js,页面不会有乱码,但是有关js的东西会出现乱码, 大概问题就是js默认编码不是UTF-8, 解决办法:将js文件用记事本打开,在另存为,保存的时候 ...

  2. MySQL编码不一致导致查询结果为空

    升级数据库后(5.1到8.0),发现一个奇怪的问题,某些页面在升级前可以正常查询,但升级后什么也查不出来了,有时候还会查出错误的结果.经过一整天的排查,终于发现由两个原因导致,现记录如下. 第一是数据 ...

  3. mybatis 使用@Select 注解,因为字符编码不一致导致mybatis 报错

    使用 mybatis 的@Select 注解, @Select({ "<script>select " + ALL_COLUMNS + " from &quo ...

  4. IDEA2019 Win10 Tomcat Server控制台中文乱码的快速解决办法

    原理 Windows10的控制台使用GBK编码,而Tomcat使用UTF-8编码,导致乱码 解决办法 修改$tomcat/conf/logging.properties文件 # 注释这行 java.u ...

  5. js ajax post提交 ie和火狐、谷歌提交的编码不一致,导致中文乱码

    今天遇到一个问题找了很久发现: 使用js ajax post提交 ie和火狐.谷歌提交的编码不一致,导致中文乱码 //http://www.cnblogs.com/QGC88 $.ajax({ url ...

  6. php curl函数采集网页出现gzip压缩、编码不同导致的乱码 图文解决方法

    方法一: header("content-type:text/html;charset=utf-8");$url="http://115.47.116.10/rest/k ...

  7. windows/linux 页面编码区别导致 python 乱码

    http://blog.csdn.net/haiross/article/details/36189103 可以先看下这篇文章..写的比较用心和详细并且高深..我只是记流水账的. 直到今天我才注意到 ...

  8. tomcat启动窗口出现乱码

    tomcat启动窗口出现乱码     或者 idea运行服务器tomcat出现乱码 在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码, 虽然这些对tomcat本身的使用没有任何影响,但却非 ...

  9. Tomcat 解决jvm中文乱码,控制台乱码

    解决方法 打开tomcat/conf/目录 修改logging.properties 找到 java.util.logging.ConsoleHandler.encoding = utf-8 这行 更 ...

随机推荐

  1. 如何从oracle官网中下载The java language specification(java 语言规范)

    第一步: 第二步: 第三步:下面这个图在这个页面的下方,所以你只要一直往下看,直到看到下图的文字为止: 第四步: 第五步: 这样你就可以成功下载该java 语言规范的pdf了. 它直接下载的网址为: ...

  2. Semaphore built from mutex in C++11

    #include <mutex> #include <condition_variable> using namespace std; class semaphore{ pri ...

  3. hihocoder 1457 后缀自动机四·重复旋律7 求不同子串的和

    描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的是小Hi发现了一部名字叫<十进制进行曲大全>的作品集,顾名思义,这部作品集里有许多作品 ...

  4. 生成 RSA 私钥及公钥

    $ openssl # 进入 OpenSSL 程序 OpenSSL> genrsa -out rsa_private_key.pem 1024 # 生成私钥 OpenSSL> pkcs8 ...

  5. 【CF1016F】Road Projects(贪心)

    题意:给你一棵n 个节点的树,定义1到n的代价是1到 n节点间的最短路径的长度. 现在给你 m 组询问,让你添加一条边权为 w 的边(不与原图重复),求代价的最大值.询问之间相互独立. 1≤n,m≤3 ...

  6. RelativeSource

    当一个Binding有明确的数据来源时可以通过为Source或ElementName赋值的办法让Binding与之关联,有的时候由于不能确定Source的对象叫什么名字,但知道它与作为Binding目 ...

  7. zmap zgrab 环境搭建

    yum install cmake gmp-devel gengetopt libpcap-devel flex byacc json-c-devel libunistring-devel golan ...

  8. ubuntu软件包管理

    ubuntu安装好了后首先要会下载和管理系统的软件包:ubuntu的软件管理方式是apt-get 安装软件包apt-get harvey@ubuntu:/var/cache/apt$ which ap ...

  9. 解决:高版本jdk编译低版本代码时eclipse提示Access restriction:The type 'Unsafe' is not accessible due to restriction on required library

    在Eclipse中采用高版本jdk编译一些低版本的源码时,由于源码中使用了一些高版本中过时的API,可能就会报错,类似于: Access restriction:The type 'Unsafe' i ...

  10. bring to front 必须在右边的form上才生效。