前台乱码问题总结

本文详细介绍了在使用Tomcat 5.5与Ext 2.0环境下如何解决URI及表单提交时出现的中文乱码问题。对于URI中的中文字符,推荐使用encodeURI或encodeURIComponent进行编码,并介绍了不同情况下如何配置Tomcat的URIEncoding属性来直接获取参数或在后台进行编码转换的方法。此外,还讨论了表单提交中文时的解决方案。

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

使用的环境:tomcat5.5,ext2.0,编码全是utf-8,包括eclipse中js,jsp文件的编码
在表单输入中含有中文和URI中含中文,都会出现乱码..但这两种情况的是不一样的..所以要分清楚..

1.URI中含中文
经过多次实验,发现用URI包含中文时,必须使用encodeURI或encodeURIComponent,否则无论后台怎么处理都会是乱码.
其中encodeURI可以对整个URI进行编码的转换;而encodeURIComponent只能对单个,否则URI中的/也会被转换.
当使用了encodeURI时,如果在tomcat的Connector中设置URIEncoding="UTF-8",在后台可以直接用request.getParameter()取值,不需要进行转换.
如果没有在tomcat中设置URIEncoding,则需要使用new String(req.getParameter("a").getBytes("ISO-8859-1"), "utf-8")进行转码.因为tomcat默认的编码是ISO-8859-1.

2.通过表单方式(使用的是Ext.form.FormPanel)
tomcat中是否设置URIEncoding,都没有用..需要在后台使用new String(req.getParameter("a").getBytes("ISO-8859-1"), "utf-8")进行转码.
可能需要在js添加Ext.lib.Ajax.defaultPostHeader = Ext.lib.Ajax.defaultPostHeader + ";utf-8"。
因为一开始遇到一个奇怪的情况,在表单中输入中文,提交时ext js中就报错..后来改了很多地方就好了。。等我把改的都还原回去以后,竟然没有问题了。。也没有加defaultPostHeader。怀疑是js文件的编码格式的问题。
需要注意的是action使用response返回json给ext时,也要使用"中文".getBytes("utf-8");否则会报js错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值