Extjs Ajax 乱码问题解决方案


Posted in Javascript onApril 15, 2009

在一次页面浏览过程中,客户端对一个URL发起浏览请求,服务端针对这次请求进行解析,而在字符编码解析方面,首先他检查该页面中的字符编码设置,即<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,这样,在页面中显示声明了字符编码为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)在文件中显示声明字符编码,<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

(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 解决.

<filter>
<description>no</description>
<display-name>EncodingFilter</display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>
com.hope.filters.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
或者设置
<globalization responseEncoding="utf-8" fileEncoding="utf-8" requestEncoding="utf-8"/>
Good Luck!

Javascript 相关文章推荐
基于jQuery的表格操作插件
Apr 22 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
Dec 03 Javascript
不能不知道的10个angularjs英文学习网站
Mar 23 Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
JavaScript实现快速排序的方法分析
Jan 10 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
JavaScript解析及序列化JSON的方法实例分析
Jan 04 Javascript
教你搭建按需加载的Vue组件库(小结)
Jul 29 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 Javascript
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 #Javascript
jQuery 入门讲解1
Apr 15 #Javascript
javascript 类方法定义还是有点区别
Apr 15 #Javascript
javaScript 读取和设置文档元素的样式属性
Apr 14 #Javascript
JavaScript获取GridView选择的行内容
Apr 14 #Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
Apr 14 #Javascript
JavaScript asp.net 获取当前超链接中的文本
Apr 14 #Javascript
You might like
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
乱谈我对耳机、音箱的感受
2021/03/02 无线电
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
php简单判断文本编码的方法
2015/07/30 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
岗位竞聘演讲稿
2014/01/10 职场文书
七一表彰活动方案
2014/01/18 职场文书
道路交通安全实施方案
2014/03/12 职场文书
奉献演讲稿范文
2014/05/21 职场文书
公司员工活动策划方案
2014/08/20 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
预备党员介绍人意见
2015/06/01 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
基于Python实现股票收益率分析
2022/04/02 Python
python运行脚本文件的三种方法实例
2022/06/25 Python