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 这行 更 ...
随机推荐
- oracle查询时遇到的坑
select * from manu_routecard t left join manu_routecardlist mr on t.routecard_id = mr.routecard_id l ...
- 编写Shell脚本的最佳实践,规范一
随着写的SHELL程序越来越多,发现自己每次写都有不同的习惯或者定义了不同的东西,变量名定义得不一样,整个程序缩进不统一,没有注释等问题,等我回过头看这些程序的时候发现很麻烦.所以写了个shell代码 ...
- 2590: [Usaco2012 Feb]Cow Coupons
2590: [Usaco2012 Feb]Cow Coupons Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 306 Solved: 154[Su ...
- js querySelector与getElementById
querySelector不能取到id以数字开头的元素,据说是遵循css规范.而document.getElementById是可以的.
- C++自带栈与队列_stack_queue_C++
栈和队列我们可以用C++里自带的函数使用,就不必手写了 1.栈,需要开头文件 #include<stack> 定义一个栈s:stack<int> s; 具体操作: s.emp ...
- 非常好!!!Linux源代码阅读——内核引导【转】
Linux源代码阅读——内核引导 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html 目录 Linux 引导过程综述 BI ...
- javascript简单拖拽(鼠标事件 mousedown mousemove mouseup)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- Express定制参数解析错误响应值
Nodejs的Express框架本身所提供的东西并没有其它框架那么多.其中的一个问题就是对于请求数据的解析. express中的请求对象并没有未经过解析的请求体,几乎所有的请求体都要经过类似于body ...
- linux日志服务之logwatch
因为logwatch默认要使用sendmail服务,所以请参考linux之发送邮件--sendmail服务配置首先设置正确sendmail服务. 安装logwatch. 查看logwatch文件在/e ...
- JavaScript js 兼容浏览器问题 兼容Fire
做BS开发就难免会用到javascript,而每个浏览器对javascript的支持有不同.这就需要我们程序员去兼容他们,不然有些浏览器就无法运行我们的代码.就会造来客户的投诉,如果让BoSS知道了, ...