tomcat编码配置gbk_tomcat编码乱码问题
最近又碰到了中文乱码问题,这里我没有把数据库牵扯进来,先说下我的环境,servlet容器使用Tomcat6.0,浏览器FireFox3.0、IE6,涉及字符编码设置的地方我的思路就是编码的地方都统一使用UTF
-8,具体配置如下:
1.所有页面的charset设置为UTF-8。
2.Tomcat的URIEncoding默认是ISO-8859-1,而我设置为UTF-8,主要是想解决中文命名的文件以及请求以get方式提交有可能出现的乱码问题(但是浏览器在地址栏中的中文编码默认是gbk不是页面的
charset)。
3.添加过滤器,调用request.setCharacterEncoding("utf-8")方法将request的字符集设定为utf-8,解决请求以post方式提交的乱码问题。
其实这样的设置貌似是不会再出现乱码问题了,不过,问题依旧来了!
我把用户发送请求方式不同引起的中文问题划分了四种类型:
1、表单的get提交
2、表单的post提交
3、页面链接传递中文参数
4、地址栏中参数直接输入中文提交
1.首先我们看表单get方式提交
浏览器根据页面的charset编码方式对页面进行编码,然后提交至服务器,首先进入对应的字符编码过滤器(如果有的话),不过Tomcat6.0对于get提交方式采用的是server.xml文件中的
URIEncoding编码方式,而并不会采用过滤器中设置的编码,那么根据我的环境设置,jsp页面都使用UTF-8的编码,Servlet容器的URIEncoding也设置为UTF-8,则servlet不用进行转码即可正确解码,获
得正常的中文字符串。那么,响应页面的中文因为页面的统一编码(UTF-8)自然也会正常显示。当然,如果我们Tomcat的URIEncoding设置为其他非UTF-8的编码方式时,页面的内容进入Tomcat解析时,因
为Tomcat和页面的编码不统一,就需要转码。
2.表单的post提交
对于这种方式的请求,request.setCharacterEncoding("一般来自于web.xml中过滤器设置的参数")方法进行编码设置将会产生作用,struts的表单提交方式默认为post方式,那么按照上面我的环境设置
,页面,容器,都采用UTF-8编码方式,就不会产生中文乱码问题。
3.页面链接中传递中文参数
我虚拟一个这样的场景,请求页面中有如下代码
String username = "编辑";
%>
页面中链接传递中文
对于这种方式,我们需要先将参数使用统一的编码方式编码,将编码后的字符放入链接,这里我对参数以UTF-8方式编码,如下
String username = java.net.URLEncoder.encode("编辑","UTF-8");
%>
那么这样我们也不会产生中文乱码问题
4.地址栏中参数直接输入中文提交
例如浏览器地址栏中输入"http://localhost:8080/helloapp.do?username=编辑"提交,对于这种方式,浏览器不会采用页面的charset方式对URL中的中文进行编码后提交至服务器(IE,FireFox都一样),
而是采用系统的GBK转码为ISO-8859-1之后提交至Servlet容器,那么,如果对于前三种方式我们所做的设置,在这里就有问题了,因为进入容器时中文进行了GBK至ISO-8859-1的转码,而之前我们的
Servlet容器URIEncoding设置为UTF-8,当我们使用request.getParameter("username")时,相当于又进行了这样的流程GBK-->ISO-8859-1-->UTF-8
综上,对于乱码问题,前三种方式是一般用户的请求方式,第四种属于非正常途径的请求方式,对于这种方式产生的问题我认为无法很好的解决,也不需要解决。
tomcat编码配置gbk_tomcat编码乱码问题相关推荐
- IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决
IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 参考文章: (1)IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 (2)https://www.cnblogs. ...
- tomcat中编码配置
在tomcat解压目录下打开 conf/server.xml 文件,在63行找到 <Connector port="8080" protocol="HTTP/1.1 ...
- linux 修改tomcat编码,修改Tomcat运行时jvm编码问题
问题: 最近在部署项目的时候出现数据乱码的情况,经过一番查看项目都是用的UTF-8编码格式,数据也是,但是经过调用接口传给对方就乱码了. 由于是部署在Windows环境下,Windows默认编码GBK ...
- mysql编码不对_MySQL编码不一致导致乱码问题总结
使用MySQL常常会出现乱码问题,一般情况下都是因为编码不一致造成,以下提供了MySQL数据编码相关的一些信息,希望会有所帮助. 一.MySQL的编码机制: 1.数据库级别的编码:数据库服务器上允许建 ...
- java菱形乱码 编码_JAVA:编码与乱码问题
一.为什么要编码? 由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解. byte一个字节即8 ...
- MySql默认编码所造成的乱码麻烦1.222
1.前言 MySQL在安装时,最后的一步,会让你选择MySQL服务器及客户端.数据库.连接接口的默认编码.通常可选择 UTF8和GB2312. 但是,如果你选择了utf8的时候,恰好你要从另一个数据库 ...
- 数据库零碎---mysql编码设置,与乱码分析
一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的"天书", 其次是文件被以错误的编码打开,然后保存, ...
- 字符编码、QString编码、Qt界面乱码问题总结
目录 一.术语解释 1.编辑器(editor) 2.编译器(compiler) 3.源文件字符编码 4.执行文件字符编码 5.Unicode 二.Qt中的字符串 1.char*和std::string ...
- Tomcat 文件编码和URL编码设置UTF-8
如果因为文件编码与系统编码的不一致,导致网页乱码需要设置Tomcat的编码,有以下两个可以设置的. 在Tomcat/conf/server.xml中的HTTP connector 和AJP conne ...
- 解决Excel打开UTF-8编码的CSV文件乱码的问题 实测好用
解决Excel打开UTF-8编码的CSV文件乱码的问题 1 2 3 4 5 6 分步阅读 CSV是一个平面文件,它的编码方式有多种.比如,MongoDB以UTF-8格式存储数据,在使用mongoexp ...
最新文章
- TensorFlow入门
- oracle视图(转)
- Wrong FS: hdfs://xxx/xxx expected: file:///
- 一个完整的操作UI线程的例子,用到了多种方式
- oracle按时间要求查询
- 小程序的wx.onAccelerometerChange
- Redis分布式锁—SETNX+Lua脚本实现篇
- 聚类实践(无监督学习)
- 什么是云存储网关CSG
- Google 警告开发者:所有 Android App 需要三天的审核时间!
- python 分解模数_Python模数
- tomcat多实例部署相关
- 基础Astar算法及节点优化python代码实现
- 非常好用的卸载软件工具【纯净绿色卸载】
- 六个好用的在线代码编辑器,你选哪个?
- ssh-keygen命令详解
- 饥荒服务器不显示管理员,饥荒联机版管理员怎么添加_饥荒联机版管理员介绍与添加方法详解_玩游戏网...
- plsql激活码(永久可用)
- iDoctor李旭东:打造管理慢性病的平板电脑
- c#右键点击选中DataGridView中整行
热门文章
- python自动下载邮件附件
- 2021年大学计算机基础,2021年大学计算机基础试题题库及答案-20210418080659.doc-原创力文档...
- 2021 泰迪杯 A 题
- rgba转16进制颜色
- 贪吃蛇python语言代码大全_Python编程代码:经典贪吃蛇
- python第一周练习 货币转换
- NDSS 2021 论文泛读
- 元数据 数据元 释义
- 最新!2022 LaTeX安装教程(Windows)
- 易语言c编译,易语言命令行编译工具免费版下载_易语言命令行编译工具最新版下载_3DM软件...