Ext中文乱码解决方案

来源:互联网 发布:多态zpn官网mac 编辑:程序博客网 时间:2024/05/01 03:50

      在Ext的使用过程中,一不留心就出现了乱码,包括在客户端提交给服务器的数据中出现了乱码和服务器端返回给客户端的数据中出现了乱码,下面简单分析一下出现乱码的原因。

  在一次页面浏览过程中,客户端对一个URL发起浏览请求,服务端针对这次请求进行解析,而在字符编码解析方面,首先他检查该页面中的字符编码设置,即<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,这样,在页面中显示声明了字符编码为UTF-8,服务器就会将该页面用UTF-8的编码输出,而如果页面中没有显示声明,在服务器中都有一个默认的字符编码,比如Apache通过AddDefaultCharset GB2312设置为GB2312,针对没有声明的文件,他会用默认编码输出,这个时候,如果页面的真正内容是UTF-8编码的话不会出现问题,如果在服务器中用GB2312编码保存,而页面输出又是UTF-8,这样就会出现乱码。

  而在Ext中的提交数据的过程中,Ext框架用的是都是UTF-8编码,而且通过JSON提交的数据也是UTF-8编码,所以要求所有的文件都是UTF-8编码。

  因此,针对上面的情况,解决乱码的方法如下:

  (1)前后台所有文件统一用UTF-8编码,数据库中最后也用UTF-8编码;

  (2)在文件中显示声明字符编码,<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,如果是动态语言的文件,特别是针对autoLoad载入的文件,如果是HTML文件,又没有显示声明,这个就需要转为动态语言文件了,在其中改变Response Headers中Content-Type的设置,在PHP中实现的方法为:header('Content-Type:text/html; charset=utf-8');

  (3)对于提交中出现的乱码,在Ext中可以修改Request Header中Content-Type的设置,具体的方法为:Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";

  当然这个问题可能出现在这个地方,就是你把字段代码单独保存的时候,如果采用txt记事本来保存,然后把名字再改成xx.js文件这样的,哪么这个就会出问题,主要是由于在windows系统里记事本默认的编码格式是ANSI,这样基本上和目前网页中编码的格式都不同因此就会出现编码格式不正确的问题!!

解决办法,确实你的jsp或者html编码格式是gb2312还是utf-8,如果是utf-8编码,哪么你可以采用打开xx.js文件然后另存为,在保存类型处选择utf-8编码格式!!

如果是gb2312你可以采用工具打开xx.js文件,然后再保存成gb2312格式就可以了!!

原创粉丝点击