JSP 即使使用UTF-8编码,仍然出现中文乱码问题的原因

本文分享了作者在使用Struts2框架时遇到的中文乱码问题及解决过程。通过调整JSP文件的编码格式,从ANSI转换到UTF-8解决了乱码问题。此外,还探讨了ANSI编码的潜在BUG。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天一直在用纯手工的方式写struts2的程序,遇到中文乱码问题。但是我全部都用的UTF-8格式,按理说不应该出现这种问题的,于是一直在不断的实验各种可能的原因,寻找解决办法,终于有点眉目了。下面简要说一下我的心得。

1、windows操作系统自带的记事本是可以选格式的,比如令存为ANSI格式,或者是UTF-8格式,等等。我的问题是因为刚开始自己是用记事本打开的jsp文件,默认记事本是按照ANSI格式打开JSP文件的,随后我手动修改如下代码<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>,将其编码方式改为utf-8格式,这个没有问题。问题的关键在于,记事本原先按照ANSI编码的中文无法转化成UTF-8格式,这样就产生了乱码问题。

2、解决办法,利用记事本的另存为功能,将JSP文件另存为UTF-8文件即可解决问题。或者,将编码格式使用GBK或者GB2312编码,本人亲自试验过,未出现乱码,本人现在还不能解释为什么会这样,待继续研究。

 

3、关于ansi编码的BUG

  很多细心的人会发现,当新建文本文档只输入“联通”2字保存再打开时将是乱码。  当txt文档中一切字符都在 C0≤AA≤DF 80≤BB≤BF 这个范围时,notepad都无法确认文档地格式,没有自动依照UTF-8格式来"Display"。 而"联通"就是C1 AA CD A8,刚好在上面地范围内,所以不能正常显现。 

记事本默认是以ANSI编码保存文本文档的,而正是这种编码存在的bug招致了上述怪现象。假如保存时选择Unicode、Unicode(big endian)、UTF-8编码就正常了。此外,假如以ANSI编码保存含有某些特别符号的文本文档,再次打开后符号也会变成英文问号。例如输入英文 this app can break 以ANSI编码保存也会变成乱码


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值