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基础资料整理3 正则
Dec 06 Javascript
通过action传过来的值在option获取进行验证的方法
Nov 14 Javascript
JavaScript调用客户端的可执行文件(示例代码)
Nov 28 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
Oct 04 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
jQuery实现根据滚动条位置加载相应内容功能
Jul 18 Javascript
使用electron制作满屏心特效的示例代码
Nov 27 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
Nov 27 Javascript
Javascript实现关闭广告效果
Jan 29 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
网页开发中的容易忽略的问题 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
curl 出现错误的调试方法(必看)
2017/02/13 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
vue实现移动端input上传视频、音频
2020/08/18 Javascript
python字符串连接方式汇总
2014/08/21 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python多线程原理与用法详解
2018/08/20 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python对象转换为json的方法步骤
2019/04/25 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
见习报告格式范文
2014/11/08 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
文案策划岗位职责
2015/02/11 职场文书
《将心比心》教学反思
2016/02/23 职场文书
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
Python实现日志实时监测的示例详解
2022/04/06 Python
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android