最近又碰到了中文乱码问题,这里我没有把数据库牵扯进来,先说下我的环境,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--&gtISO-8859-1--&gtUTF-8

综上,对于乱码问题,前三种方式是一般用户的请求方式,第四种属于非正常途径的请求方式,对于这种方式产生的问题我认为无法很好的解决,也不需要解决。

tomcat编码配置gbk_tomcat编码乱码问题相关推荐

  1. IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决

    IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 参考文章: (1)IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 (2)https://www.cnblogs. ...

  2. tomcat中编码配置

    在tomcat解压目录下打开 conf/server.xml 文件,在63行找到 <Connector port="8080" protocol="HTTP/1.1 ...

  3. linux 修改tomcat编码,修改Tomcat运行时jvm编码问题

    问题: 最近在部署项目的时候出现数据乱码的情况,经过一番查看项目都是用的UTF-8编码格式,数据也是,但是经过调用接口传给对方就乱码了. 由于是部署在Windows环境下,Windows默认编码GBK ...

  4. mysql编码不对_MySQL编码不一致导致乱码问题总结

    使用MySQL常常会出现乱码问题,一般情况下都是因为编码不一致造成,以下提供了MySQL数据编码相关的一些信息,希望会有所帮助. 一.MySQL的编码机制: 1.数据库级别的编码:数据库服务器上允许建 ...

  5. java菱形乱码 编码_JAVA:编码与乱码问题

    一.为什么要编码? 由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解. byte一个字节即8 ...

  6. MySql默认编码所造成的乱码麻烦1.222

    1.前言 MySQL在安装时,最后的一步,会让你选择MySQL服务器及客户端.数据库.连接接口的默认编码.通常可选择 UTF8和GB2312. 但是,如果你选择了utf8的时候,恰好你要从另一个数据库 ...

  7. 数据库零碎---mysql编码设置,与乱码分析

    一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的"天书", 其次是文件被以错误的编码打开,然后保存, ...

  8. 字符编码、QString编码、Qt界面乱码问题总结

    目录 一.术语解释 1.编辑器(editor) 2.编译器(compiler) 3.源文件字符编码 4.执行文件字符编码 5.Unicode 二.Qt中的字符串 1.char*和std::string ...

  9. Tomcat 文件编码和URL编码设置UTF-8

    如果因为文件编码与系统编码的不一致,导致网页乱码需要设置Tomcat的编码,有以下两个可以设置的. 在Tomcat/conf/server.xml中的HTTP connector 和AJP conne ...

  10. 解决Excel打开UTF-8编码的CSV文件乱码的问题 实测好用

    解决Excel打开UTF-8编码的CSV文件乱码的问题 1 2 3 4 5 6 分步阅读 CSV是一个平面文件,它的编码方式有多种.比如,MongoDB以UTF-8格式存储数据,在使用mongoexp ...

最新文章

  1. TensorFlow入门
  2. oracle视图(转)
  3. Wrong FS: hdfs://xxx/xxx expected: file:///
  4. 一个完整的操作UI线程的例子,用到了多种方式
  5. oracle按时间要求查询
  6. 小程序的wx.onAccelerometerChange
  7. Redis分布式锁—SETNX+Lua脚本实现篇
  8. 聚类实践(无监督学习)
  9. 什么是云存储网关CSG
  10. Google 警告开发者:所有 Android App 需要三天的审核时间!
  11. python 分解模数_Python模数
  12. tomcat多实例部署相关
  13. 基础Astar算法及节点优化python代码实现
  14. 非常好用的卸载软件工具【纯净绿色卸载】
  15. 六个好用的在线代码编辑器,你选哪个?
  16. ssh-keygen命令详解
  17. 饥荒服务器不显示管理员,饥荒联机版管理员怎么添加_饥荒联机版管理员介绍与添加方法详解_玩游戏网...
  18. plsql激活码(永久可用)
  19. iDoctor李旭东:打造管理慢性病的平板电脑
  20. c#右键点击选中DataGridView中整行

热门文章

  1. python自动下载邮件附件
  2. 2021年大学计算机基础,2021年大学计算机基础试题题库及答案-20210418080659.doc-原创力文档...
  3. 2021 泰迪杯 A 题
  4. rgba转16进制颜色
  5. 贪吃蛇python语言代码大全_Python编程代码:经典贪吃蛇
  6. python第一周练习 货币转换
  7. NDSS 2021 论文泛读
  8. 元数据 数据元 释义
  9. 最新!2022 LaTeX安装教程(Windows)
  10. 易语言c编译,易语言命令行编译工具免费版下载_易语言命令行编译工具最新版下载_3DM软件...