Ajax 乱码问题解决方案

客户端对一个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"/>

时间: 2024-10-03 07:26:11

Ajax 乱码问题解决方案的相关文章

Extjs Ajax 乱码问题解决方案_extjs

在一次页面浏览过程中,客户端对一个URL发起浏览请求,服务端针对这次请求进行解析,而在字符编码解析方面,首先他检查该页面中的字符编码设置,即<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,这样,在页面中显示声明了字符编码为UTF-8,服务器就会将该页面用UTF-8的编码输出,而如果页面中没有显示声明,在服务器中都有一个默认的字符编码,比如GB2312,针对没有声明

代码-AJAX乱码问题,新手求助

问题描述 AJAX乱码问题,新手求助 这是Controller的代码如下 javascript的代码如下 然后在页面显示的时候就成了这个样子 跪求高人解答到底是哪里出了问题啊? 解决方案 不管什么编码,用htmlencode编码下. 解决方案二: AJAX POST乱码问题ajax中文数据传输乱码问题以及zend framework escape()调用[Java][jquery]ajax乱码问题 解决方案三: ajax指定编码为utf8了吗 解决方案四: 这里面并没有任何乱码啊!是你没有对返回

在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案[转]

在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案 病症表现为:主要表现为用T-sql语句插入中文数据时数据库显示全是问号"???" 解决办法: 第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可.(注意:在选择数据库属性的时候必须确保你所修改的数据库未被使用才可以修改否则会失败的) 第二种办法:首先打开你的sql查询分析器

Get中文乱码问题解决方案

 传参的时候遇到Get中文乱码,IE浏览器Get中文乱码问题,该怎么解决呢?下面为大家详细介绍下具体的解决方案 Get中文乱码问题解决方案:    修改Tomcat根目录下conf / server.xml文件,代码如下:  复制代码 代码如下: <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443&quo

python 中文乱码问题解决方案

      最近在项目中部署结巴分词的时候遇到了乱码情况,明明是中文,确显示不出来或者显示乱码.解决方案如下. 利用isinstance 来判断是否已经编码,s是出问题的字符串.unicode是没编码 isinstance(s, unicode):  用print 打印,如果结果是true说明没编码.如果是false说明编码了,但是编的码不对 print isinstance(s,unicode) 如果没编码,加入编码 s.encode('UTF-8') 如果编码了,编错了,就先解码再编 s.d

ASP.NET中AJAX乱码解决方法

ajax乱码是一个程序员经常会碰到的问题,今天我们要讲的是关于asp教程.net中ajax乱码解决方法哦,下面先详细的介绍了处理方法,然后再举例说明 利用asp.net教程 string s = system.text.encoding.utf8.getstring(request.binaryread(request.contentlength));   system.collections.specialized.namevaluecollection form = httputility.

asp.net url传递中文乱码的解决方案

asp教程.net url传递中文乱码的解决方案 1.设置web.config文件. <system.web> ...... <globalization requestencoding="gb2312" responseencoding="gb2312" culture="zh-cn" fileencoding="gb2312" /> ...... </system.web> 2.传递中文

解决Heritrix镜像方式存储路径中文乱码的解决方案

在解决此问题前先看看为何会出现乱码. 以中国文物网为例,下面的一个路径下有图片,如下 http://www.wenwuchina.com/uploads/conew_刘亚东老师现场弹奏<潇湘水云>_conew1.jpg ,当在浏览器输入该地址时,浏览器会将其编码为如下地址 http://www.wenwuchina.com/uploads/conew_%E5%88%98%E4%BA%9A%E4%B8%9C%E8%80%81%E5%B8%88%E7%8E%B0%E5%9C%BA%E5%BC%B9

cmd 命令行模式下输出中文时显示乱码的解决方案

cmd 命令行模式下输出中文时显示乱码的解决方案 因为发现默认值->属性窗口中已是936了,只好通过注册表直接改动:HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe下的项CodePage项值改为十进制"936"值或 十六进制"000003a8"值.说明一下: 十六进制"000003a8"或十进制"936",表示"936 (ANSI/OEM - 简体中