关于tomcat7、tomcat8的一个jsp乱码问题,难道是bug?求释疑

NewMoons NewMoons 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一直使用tomcat6,最近换了tomcat7,发现以前tomcat6下显示正常的好多jsp页面出现了乱码,请看下面这个jsp页面(假设名字为test.jsp):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
这是一个jsp页面。
</body>
</html>

其中【这是一个jsp页面。】在tomcat6下显示是正常的,但换了tomcat7或8,就是乱码。
经过仔细研究发现,【<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">】这句话到了tomca7后的版本无效了,不能使浏览器正确的做出编码选择导致的。最简单的验证,把test.jsp改为test.html,tomcat7下立刻就正常了。
这说明,tomcat7以后的版本不知出于什么原因导致了【<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">】失效,如想避免乱码,则必须加上【<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>】这句话。
试了filter(其实知道也没用)各种方案,发现只能通过添加【<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>】这句话才能避免乱码,郁闷。因为这样无法使用变量(如EL表达式)来表示UTF-8,如【<meta http-equiv="Content-Type" content="text/html; charset=${encoding">】丧失了灵活性。【<%@ ... %>】内无法使用任何标签语言,包括EL表达式。
不知道大家遇到这个问题没有,不信的可以亲自试一下,我真的很怀疑这是tomca7以后版本的一个bug,否则这是出于什么目的呢?求释疑。谢谢!
...全文
评论 17
收藏 已收藏
分享
返回顶部
NewMoons
Web 开发 81,108 成员 341,721 内容