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插件之自动添加删除行的实现
Oct 13 Javascript
异步安全加载javascript文件的方法
Jul 21 Javascript
js实现可键盘控制的简单抽奖程序
Jul 13 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
bootstrap使用validate实现简单校验功能
Dec 02 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
Mar 15 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
js装饰设计模式学习心得
Feb 17 Javascript
JS实现字体背景跑马灯
Jan 06 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 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
php防止恶意刷新与刷票的方法
2014/11/21 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
质检部经理岗位职责
2014/02/19 职场文书
我的画教学反思
2014/04/28 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2014年物流工作总结
2014/11/25 职场文书
倡议书作文
2015/01/19 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
法定代表人免职证明
2015/06/24 职场文书
创业计划书之宠物店
2019/09/19 职场文书
浅谈Python数学建模之固定费用问题
2021/06/23 Python
MySQL视图概念以及相关应用
2022/04/19 MySQL