当前位置: 首页 > 图文教程 > 网络编程 > Javascript > Extjs Ajax 乱码问题解决方案

Javascript
jQuery Selectors(选择器)的使用(七、子元素篇)
jquery 事件执行检测代码
javascript 支持页码格式的分页类
javascript tabIndex属性
jquery tablesorter.js 支持中文表格排序改进
javascript 返回数组中不重复的元素
javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版
jQuery 开天辟地入门篇一
jMessageBox 基于jQuery的窗口插件
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
javascript实现的textarea运行框效果代码 不用指定id批量指定
测试你的JS的掌握程度的代码
js 与或运算符 || && 妙用
模仿JQuery.extend函数扩展自己对象的js代码
json 介绍 js简单实例
Ext.MessageBox工具类简介
ASP小贴士/ASP Tips javascript tips可以当桌面
勾选时激活input 否则禁用的javascript代码
javascript 输入文本框时的友好提示
jValidate 基于jQuery的表单验证插件

Javascript 中的 Extjs Ajax 乱码问题解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-10   浏览: 203 ::
收藏到网摘: n/a

在Ext的使用过程中,一不留心就出现了乱码,包括在客户端提交给服务器的数据中出现了乱码和服务器端返回给客户端的数据中出现了乱码,下面简单分析一下出现乱码的原因。 在一次页面浏览过程中,客户端对一个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!