• [转] Ext中文乱码解决方案


    Ext中文乱码解决方案
    2008年07月04日 星期五 13:23

          在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格式就可以了!!

  • 相关阅读:
    DELPHI加密字串(异或运算加密)
    delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)
    delphi 浮点数转换成十六进制字符串的方法
    LRC CRC 纵向冗余码校验
    lrc 校验码 ascii 格式
    LRC的效验码的计算方法
    写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
    CRC的校验原理
    CRC校验
    RTU模式与ASCII模式有什么不同
  • 原文地址:https://www.cnblogs.com/xjyggd/p/1310776.html
Copyright © 2020-2023  润新知