jsp文件中charset和pageEncoding的区别与jsp页面乱码的原因及处理

一.jsp文件中charset和pageEncoding的区别

1. contentType的charset是指服务器发送给客户端时的内容编码

将charset为UTF-8,那么在浏览器当前网页右键-->编码,可以看到浏览器选择的编码也是UTF-8,如果charset设置为GBK,浏览器编码则会选择为GBK。

2.pageEncoding是指jsp页面的输出方式

设置pageEncoding设置为GBK,无论这个jsp文件实际是什么编码方式,都会以GBK的格式输出;pageEncoding还有一个功能就是告诉IDE这个文件是什么编码格式,以便于IDE自动修改文件编码;这里用Eclipse测试(其他IDE未尝试):
windows环境下选中jsp文件 右键-->属性 可以看到下图:

在这里插入图片描述
如果Default选项为选中状态,当改变pageEncoding时,Eclipse会自动改变jsp文件的编码格式。

二.jsp页面乱码的原因及处理

1.pageEncoding设置不当造成乱码
关于pageEncoding的取值分为下面三种情况(charset的取值原则与此一致):
  1. 指定pageEncoding的值,pageEncoding即为指定的值;
  2. 只有charset的值,pageEncoding认为和charset取值一样;
  3. 既无pageEncoding也无charset,系统会取默认值“ISO-8859-1”

注意:当jsp页面pageEncoding指定的编码和jsp页面的实际编码(在elispe中通过鼠标右键设置的那个)不一致时,如下图文件编码选择了Other的GBK,如果此时pageEncoding指定的编码不是GBK就会出现乱码。
在这里插入图片描述
如果Default选项为选中状态,当改变pageEncoding时,Eclipse会自动改变jsp文件的编码格式(会变成和pageEncoding一样)。这样就不会出现乱码了

2.charset指定的编码不包含jsp页面中的所有文字

当charset的编码中不含有当前jsp页面中的某些字符时,会出现乱码情况;如:jsp页面中含有中文字符,charset为“ISO-8859-1”(可以保存,发布),pageEncoding为GBK(其他任何Tomcat支持的含有中文字符的编码都行,UTF-8 , gb2312等)时,访问该页面会出现乱码,这是由于“ISO-8859-1”编码不含有中文字符,无法正确解析导致。如下图:
在这里插入图片描述
临时解决的办法就是在浏览器中把编码方式换了(右键->编码)

另外,如果pageEncoding指定的编码不含有jsp页面中的所有字符,Eclipse是不让保存的,如:pageEncoding=ISO-8859-1,jsp页面含有中文,当保存时Eclipse会弹出下面的对话框:
在这里插入图片描述

三.乱码的处理

综上所述:为了保证jsp不会乱码,在Eclipse下我们可以这么做:

1.jsp编码格式选择默认的选项Default;
2.不设置charset的编码;
3.必须设置 pageEncoding (其实在tomcat的识别范围内,是什么无所谓,符合公司的规范即可);

补充

当用Jsp编译指令(简称指令)指定了charset时,系统就不会再“看“meta标签中的charset了!如下图:

在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值