前台乱码问题总结

使用的环境: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错误。

你可能感兴趣的:(eclipse,tomcat,Ajax,json,ext)