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 相关文章推荐
JS 文字符串转换unicode编码函数
May 30 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 Javascript
jqGrid jQuery 表格插件测试代码
Aug 23 Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 Javascript
javascript 循环调用示例介绍
Nov 20 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
May 22 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
Aug 10 Javascript
js实现rem自动匹配计算font-size的示例
Nov 18 Javascript
Angular数据绑定机制原理
Apr 17 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
js实现div的切换特效上一个下一个
2014/02/11 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
python3实现逐字输出的方法
2019/01/23 Python
Python多项式回归的实现方法
2019/03/11 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
函授毕业个人自我评价
2014/02/20 职场文书
学雷锋标语
2014/06/25 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android