extjs ajax 中文乱码,Extjs Ajax 乱码问题解决方案

这篇博客详细分析了ExtJS中出现Ajax乱码的原因,并提供了多种解决方案,包括Java后台设置响应编码、文件保存格式的调整以及Ext.lib.Ajax的配置修改。同时,文章提到了开发环境如MyEclipse的配置建议,确保所有文件以UTF-8编码,以避免乱码问题。

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

Extjs Ajax 乱码问题解决方案

更新时间:2009年04月15日 22:11:47   作者:

在Ext的使用过程中,一不留心就出现了乱码,包括在客户端提交给服务器的数据中出现了乱码和服务器端返回给客户端的数据中出现了乱码,下面简单分析一下出现乱码的原因。

在一次页面浏览过程中,客户端对一个URL发起浏览请求,服务端针对这次请求进行解析,而在字符编码解析方面,首先他检查该页面中的字符编码设置,即,这样,在页面中显示声明了字符编码为UTF-8,服务器就会将该页面用UTF-8的编码输出,而如果页面中没有显示声明,在服务器中都有一个默认的字符编码,比如GB2312,针对没有声明的文件,他会用默认编码输出,这个时候,如果页面输出又是UTF-8,这样就会出现乱码。

而在Ext中的提交数据的过程中,Ext框架用的是都是UTF-8编码,而且通过JSON提交的数据也是UTF-8编码,所以要求所有的文件都是UTF-8编码。

解决乱码的方法

以下几项首先必须要在平时的编码过程中做到:

(1) JAVA后台文件加入 response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

(2)在文件中显示声明字符编码,

(3)对于提交中出现的乱码,在Ext中可以修改Request Header中Content-Type的设置,具体的方法为:Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";

最后,问题还可能出现在文件的保存格式上。就是你把代码文件保存的时候,如果开发环境默认保存的不是UTF-8格式,那么也会出现问题! 所以就要对开发环境也有一个要求。

开发环境的配置

如果采用记事本来编写保存代码文件(.js),那这个就会出问题,主要是由于在windows系统里记事本默认的编码格式是ANSI,这样基本上和目前网页中编码的格式都不同因此就会出现编码格式不正确的问题。解决办法就是打开xx.js文件然后另存为,在保存类型处选择utf-8编码格式就可以了。

当然,主流还是使用MyEclipse,所以说一下MyEclipse里要配置哪些地方。

Preferences->General->Content Types 选中Text 编辑下面的Default encoding 为utf-8然后Update。

Preferences->General->Content Types->Editors->Text Editors->Spelling 下Encoding 选 Default(UTF-8)

Preferences->General->Content Types->Workspace下Text File Encoding 选 Other: UTF-8

最后如果还出现乱码 , 利用

System.out.print(request.getCharacterEncoding());

System.out.print(response.getCharacterEncoding());

察看request 或 response 编码是否不是utf-8

若不是,利用web.xml中的 filter 解决.

no

EncodingFilter

EncodingFilter

com.hope.filters.SetCharacterEncodingFilter

encoding

utf-8

或者设置

Good Luck!

相关文章

1a1b05c64693fbf380aa1344a7812747.png

由于开发过程中大多用chrome来调试,很少在ie中调试(现在两者都要兼顾),导致最后在ie中页面不能正常加载,当时那个囧啊,看到ie报的错,我都想哭,连出错的堆栈信息都没有(这一点,ie做的真不好),无从下手啊2013-01-01

4f55910a645b073bc4fc65dc10dc14bd.png

只有有了事件,页面才能真正的“活”起来。Extjs的事件也是经过良好封装的,对于事件的处理都由Ext.uitl.Observable类提供接口。2010-01-01

0ea3c7666119d5615e582f823fb3fad6.png

ExtJs grid行 右键菜单的两种方法,需要用extjs制作右键菜单的朋友可以参考下。2010-06-06

4f96a78db829b1556ff16de21e013c7a.png

Ext对基本类型的扩展 ext,extjs,format,学习extjs的朋友可以参考下。2010-12-12

8cc1031babc6aff2319f1c6af8544aa0.png

Extjs是从yui-ext发展来的一套ajax控件,是一套完整的富客户端解决方案,也因为功能完整,ext-all.js有400多k(最新的extjs3.2.0 有600多k),以为是基于js和css的功能实现,对客户端机器性能也有一定的要求,比如对ie6以下版本的不支持。2010-04-04

0c932a99bb7b6f23c937db507070cc7b.png

在本人目前的项目中,前端部分完全使用EXTJS基于“One-Page”理念搭建。2010-03-03

cca732bf65a93ed2ec0ac80c638460fe.png

本文开始进入Extjs最核心最优秀的部分。2010-01-01

2d9f31f2af7b675a3d153d2b7f1035a7.png

本文详细介绍下关于加载和回调的问题、从一个store添加符合某条件记录给另一个store中,感兴趣的朋友可以参考下,希望对你有所帮助2013-04-04

b452cee8ec5cd9e58ab98eba17281e59.png

最近调试EXTJS 4的treegrid实例,看了很多水友的文章,以及官方的demo,没一个可靠的,于是乎自己折腾中...感兴趣的朋友可以了解下本文或许对你有所帮助2013-07-07

f4838ec7e2d4da28e0b57d4e852dadd4.png

动态加载grid在ExtJs中如何实现,貌似有很多的朋友都不知道吧,下面有个不错的示例,希望对大家有所帮助2013-09-09

最新评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值