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 相关文章推荐
JavaScript脚本性能优化注意事项
Nov 18 Javascript
js判断字符长度以及中英文数字等
Dec 31 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
Feb 12 Javascript
jquery滚动特效集锦
Jun 03 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
jQuery实现列表的增加和删除功能
Jun 14 jQuery
ES6扩展运算符和rest运算符用法实例分析
May 23 Javascript
在vue中使用vant TreeSelect分类选择组件操作
Nov 02 Javascript
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
网页开发中的容易忽略的问题 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
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
Python-openCV开运算实例
2020/07/05 Python
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
教师个人鉴定材料
2014/02/08 职场文书
公司合作意向书
2014/04/01 职场文书
医德医风演讲稿
2014/05/20 职场文书
信息管理专业自荐书
2014/06/05 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
交通事故协议书范本
2014/11/18 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
五年级小学生评语
2014/12/26 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
交通安全教育主题班会
2015/08/12 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL