文档章节

Tomcat后台中文乱码分析

yxzkm
 yxzkm
发布于 2016/12/27 15:44
字数 571
阅读 33
收藏 0

web应用程序在提交中文数据的时候,后台经常出现乱码现象。为了彻底分析产生原因,做了一个简单测试:

创建一个简单的java web应用程序,没有使用任何框架,部署在tomcat环境中。

使用谷歌和ie浏览器分别进行测试,测试结果如下:

Browser Method Tomcat URIEncoding httpServletRequest System.out
Chrome GET - - (乱码)
Chrome GET - setCharacterEncoding("gb2312") (乱码)
Chrome GET - setCharacterEncoding("utf-8") (乱码)
Chrome GET URIEncoding="gb2312"  - (乱码)
Chrome GET URIEncoding="gb2312"  setCharacterEncoding("gb2312") (乱码)
Chrome GET URIEncoding="gb2312"  setCharacterEncoding("utf-8") (乱码)
Chrome GET URIEncoding="utf-8"  - 中文正常显示
Chrome GET URIEncoding="utf-8"  setCharacterEncoding("gb2312") 中文正常显示
Chrome GET URIEncoding="utf-8"  setCharacterEncoding("utf-8") 中文正常显示
Chrome POST - - (乱码)
Chrome POST - setCharacterEncoding("gb2312") (乱码)
Chrome POST - setCharacterEncoding("utf-8") 中文正常显示
Chrome POST URIEncoding="gb2312"  - (乱码)
Chrome POST URIEncoding="gb2312"  setCharacterEncoding("gb2312") (乱码)
Chrome POST URIEncoding="gb2312"  setCharacterEncoding("utf-8") 中文正常显示
Chrome POST URIEncoding="utf-8"  - (乱码)
Chrome POST URIEncoding="utf-8"  setCharacterEncoding("gb2312") (乱码)
Chrome POST URIEncoding="utf-8"  setCharacterEncoding("utf-8") 中文正常显示
IE11 GET - - (乱码)
IE11 GET - setCharacterEncoding("gb2312") (乱码)
IE11 GET - setCharacterEncoding("utf-8") (乱码)
IE11 GET URIEncoding="gb2312"  - (乱码)
IE11 GET URIEncoding="gb2312"  setCharacterEncoding("gb2312") (乱码)
IE11 GET URIEncoding="gb2312"  setCharacterEncoding("utf-8") (乱码)
IE11 GET URIEncoding="utf-8"  - 中文正常显示
IE11 GET URIEncoding="utf-8"  setCharacterEncoding("gb2312") 中文正常显示
IE11 GET URIEncoding="utf-8"  setCharacterEncoding("utf-8") 中文正常显示
IE11 POST - - (乱码)
IE11 POST - setCharacterEncoding("gb2312") (乱码)
IE11 POST - setCharacterEncoding("utf-8") 中文正常显示
IE11 POST URIEncoding="gb2312"  - (乱码)
IE11 POST URIEncoding="gb2312"  setCharacterEncoding("gb2312") (乱码)
IE11 POST URIEncoding="gb2312"  setCharacterEncoding("utf-8") 中文正常显示
IE11 POST URIEncoding="utf-8"  - (乱码)
IE11 POST URIEncoding="utf-8"  setCharacterEncoding("gb2312") (乱码)
IE11 POST URIEncoding="utf-8"  setCharacterEncoding("utf-8") 中文正常显示

从上面的测试结果看出:

1.如果是GET请求,应在tomcat的server.xml中设置 URLEncoding="UTF-8" 。

2.如果是POST请求,请在后台设置 httpServletRequest.setCharacterEncoding("utf-8"); 或通过使用MVC框架并设置字符编码参数来解决乱码问题。

以下是测试页面代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>字符编码测试</title>
</head>
<body>
<form name="posttest" action="/posttest" method="post">
提交测试(POST): 
<input type="text" name="user" value="中文正常显示" />
<input type="submit" value="Submit" />
</form>
<br />
<a href="/gettest?user=中文正常显示">请点击这里进行GET测试</a>
</body>
</html>

 

© 著作权归作者所有

共有 人打赏支持
yxzkm
粉丝 1
博文 24
码字总数 8724
作品 0
西城
Java URL传参中文乱码问题

我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题。 URL传参所使用的编码为服务器中设置的编码,而ajax请求的编码为页面编码。 如果不设置tomca...

程序猿之小菜鸟
2015/08/28
504
0
Tomcat7中文乱码,不做修改在Tomcat6下正常

@红薯 你好,想跟你请教个问题:web应用从后台输出的中文出现乱码,页面写的中文显示正常,把容器换成Tomcat6中文显示正常,程序里面设定了编码为UTF-8,启动Tomcat7的时候控制台中文输出正常...

紫轩阡陌
2013/02/24
3.1K
2
服务器上tomcat7控制台中文乱码,但是前面的日期不是乱码怎么回事

大家好,请教个问题,我tomcat7在我本地运行不乱码,但是在客户服务器上控制台前面的日期不是乱码,但是后台访问的中文乱码乱码的形式例如:”内蒙古”乱码为“?蒙古”不知道怎么回事啊,求大...

梦幻女侠
2015/09/07
743
6
关于jsp访问路径带中文值需encodeURI两次的原因

jsp往后台传值的时候,一般可以通过路径传值和ajax传值。 其中通过ajax post传值不会出现中文乱码现象,但路径传值如果不通过特殊的编码,后台可能获取到的是一串乱码。 encodeURI可以帮助我...

文文1
2016/07/12
184
0
升级tomcat后出现的页面录入框中文乱码问题解决方法

我把自己的web应用从tomcat5.0.30升级到5.5.26以后,发现页面的静态文字正常,但页面输入框输入中文后,在后台的action层检查发现中文变成乱码了,在5.5.26环境的action中使用下面的语句测试: S...

迷途d书童
2012/03/09
121
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部