Tomcat 编码不一致导致乱码
众所周知,Tomcat是一个基于HTTP协议的Java应用服务器(非Web服务器),也是一个Servlet容器.
一般我们会基于使用HTTP协议的Post或Get方法来传递内容或参数,中间会涉及一些编解码操作,若不了解编解码过程可能会遇到乱码或解析问题.
接下来,我们来了解下调用方与tomcat交互时编解码过程:
- 调用方使用utf-8进行encode(可在代码层实现)
- tomcat使用iso8859-1进行decode(server.xml对应的Connector设置)
- servlet使用iso8859-1进行encode(webapp中web.xml中设置,注意:该方式仅tomcat 7.x 版本支持)
- 服务方使用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 编码不一致导致乱码的更多相关文章
- <<< html编码中js和html编码不一致导致乱码
在html中,有时把编码设置成UTF-8之后,引入js,页面不会有乱码,但是有关js的东西会出现乱码, 大概问题就是js默认编码不是UTF-8, 解决办法:将js文件用记事本打开,在另存为,保存的时候 ...
- MySQL编码不一致导致查询结果为空
升级数据库后(5.1到8.0),发现一个奇怪的问题,某些页面在升级前可以正常查询,但升级后什么也查不出来了,有时候还会查出错误的结果.经过一整天的排查,终于发现由两个原因导致,现记录如下. 第一是数据 ...
- mybatis 使用@Select 注解,因为字符编码不一致导致mybatis 报错
使用 mybatis 的@Select 注解, @Select({ "<script>select " + ALL_COLUMNS + " from &quo ...
- IDEA2019 Win10 Tomcat Server控制台中文乱码的快速解决办法
原理 Windows10的控制台使用GBK编码,而Tomcat使用UTF-8编码,导致乱码 解决办法 修改$tomcat/conf/logging.properties文件 # 注释这行 java.u ...
- js ajax post提交 ie和火狐、谷歌提交的编码不一致,导致中文乱码
今天遇到一个问题找了很久发现: 使用js ajax post提交 ie和火狐.谷歌提交的编码不一致,导致中文乱码 //http://www.cnblogs.com/QGC88 $.ajax({ url ...
- php curl函数采集网页出现gzip压缩、编码不同导致的乱码 图文解决方法
方法一: header("content-type:text/html;charset=utf-8");$url="http://115.47.116.10/rest/k ...
- windows/linux 页面编码区别导致 python 乱码
http://blog.csdn.net/haiross/article/details/36189103 可以先看下这篇文章..写的比较用心和详细并且高深..我只是记流水账的. 直到今天我才注意到 ...
- tomcat启动窗口出现乱码
tomcat启动窗口出现乱码 或者 idea运行服务器tomcat出现乱码 在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码, 虽然这些对tomcat本身的使用没有任何影响,但却非 ...
- Tomcat 解决jvm中文乱码,控制台乱码
解决方法 打开tomcat/conf/目录 修改logging.properties 找到 java.util.logging.ConsoleHandler.encoding = utf-8 这行 更 ...
随机推荐
- Cisco IPC Emergency Responder Error
Upon startup of the newer Cisco IP Communicator clients (especially on Windows Vista/7), sometimes y ...
- iphone上做webapp时总会识别一串数字为手机号码并变黑显示
iphone上网页里总会识别一串数字为手机号码并变黑显示 只需要在head里加上一个特别的meta即可 <meta name="format-detection" conte ...
- php实现二维码
封装函数 function verifyImage($len=3){ //session_start(); $scr="abcdefghijklmnoqprstuvwxyzABCDEFJHI ...
- 发布windows服务的批处理
安装bat: C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe WatchWinService.exe pause 卸载bat ...
- Java并发笔记(一)
1. lock (todo) 2. 写时复制容器 CopyOnWrite容器即写时复制的容器.通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个 ...
- MFC does not support WINVER less than 0x0501 解决方案(转)
原文转自 http://blog.csdn.net/ygzhong000/article/details/41750841 解决方案:在stdafx.h头文件中添加以下行. #define WINVE ...
- hdu 1546(dijkstra)
Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- 蓝桥杯模拟赛 引爆炸弹-并查集+DFS
引爆炸弹 在一个 n×m的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地图上的所有炸弹, ...
- servlet方法
1.每一个Servlet都必须要实现Servlet接口,GenericServlet是个通用的.不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承于Generi ...
- 最近公共祖先 Least Common Ancestors(LCA)算法 --- 与RMQ问题的转换
[简介] LCA(T,u,v):在有根树T中,询问一个距离根最远的结点x,使得x同时为结点u.v的祖先. RMQ(A,i,j):对于线性序列A中,询问区间[i,j]上的最值.见我的博客---RMQ - ...