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 这行 更 ...
随机推荐
- 切换cmd的目录
http://jingyan.baidu.com/article/af9f5a2d20253343140a450f.html
- HDU1520 树形DP入门
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- weblogic12c配置免密码启动
在运行startWeblogic.sh时需要输入有效的账号密码才能启动weblogic,为简化操作,可以配置boot.properties来免输账号密码,配置方法如下:1.查看在./domains/x ...
- Html5学习进阶一 视频和音频
HTML5 规定了一种通过 video 元素来包含视频的标准方法. 视频格式 当前,video 元素支持两种视频格式: Internet Explorer Firefox 3.5 Opera 10 ...
- Python 求最大公因式~辗转相除法
从错误中学python(4)——最小公约数与辗转相除法 网上看到一篇很简洁辗转相除法的写法:不用判断a,b的大小 def gcp(a, b): while(b%a!=0): a,b=b%a,a ret ...
- MFC中CTime获取日期时间的方法
MFC中CTime类的功能非常强大,可以获取年.月.日.小时.分钟.秒.星期等等,最最重要的是可根据需要去格式化.下面是具体的使用方式: ① 定义一个CTime类对象 CTime time; ② 得到 ...
- 获取URL中的文件的扩展名
问题: 尽可能多地写出获取文件扩展名的方法: //方法一(分割数组) function getExt($url){ $arr = explode('.',$url); $len = count($ar ...
- gitlib 安装
参考文件https://www.cnblogs.com/rslai/p/9109624.html
- 第一章:1-10、试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit),从源站到目的站共经过k段链路,每段链路的传播时延为d(s),数据率为C(bit/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?
<计算机网络>谢希仁著第四版课后习题答案答:对电路交换,当t=s时,链路建立: 当t=s+x/C,发送完最后一bit: 当t=s+x/C+kd,所有的信息到 ...
- mysql打开文件数太多的解决办法
http://www.orczhou.com/index.php/2010/10/mysql-open-file-limit/ http://www.cnblogs.com/end/archive/2 ...