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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
获取body标签的两种方法
Oct 13 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
js解决movebox移动问题
Mar 29 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
详解Angular开发中的登陆与身份验证
Jul 27 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
浅析node.js的模块加载机制
May 25 Javascript
Element input树型下拉框的实现代码
Dec 21 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 Javascript
js实现页面导航层级指示效果
Aug 25 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
一个查看session内容的函数
2006/10/09 PHP
PHP中Session的概念
2006/10/09 PHP
一篇入门的php Class 文章
2007/04/04 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
PHP中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
python绘制圆柱体的方法
2018/07/02 Python
python调用百度语音识别api
2018/08/30 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
简单了解django orm中介模型
2019/07/30 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
计算机学生的自我评价分享
2014/02/18 职场文书
员工自我评价范文
2015/03/11 职场文书
我的1919观后感
2015/06/03 职场文书
绿里奇迹观后感
2015/06/15 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书