中文乱码那些事

中文乱码比较常的问题,大概分为三个方面,1 页面乱码,2 编辑器乱码  3 与服务器通信乱码,3 编辑器乱码

1 页面中文乱码

页面中文乱码的情形,常见于 JS操作改变文本时出现,原因也很多分开来讲,

1) js 文件编码问题,通常js 文件包含中文时应和页面编码保持一致,乱码大多是因为js 文件和页面编码不一致

     解决方案: js 文件与页面编码一致

2) js 文件与页面编码一致,但容易忽略的一点是,当使用script 标签引入JS时,charset 应与js 文件本身保持一致,而不是页面编码一致

     解决方案:charset 应与JS文件保持一致

3) js 文件使用script 标签引入时设置charset  charset 与 js  文件本身一致但与 页面编码不一致,这种情况通常在IE8出现,也并非独立出现,通常是几个JS文件混合引入时出现这种情况,比如,A 文件从B文件中读配置项 出现乱码,而A文件本身中文却不乱码,(当时没有深入跟进,抽时间再查,并且只有IE8),

    解决方案: 中文转unicode  一下世界清静了。。。可以使用谷歌的一个压缩工具 Closure-Compiler 需要注意的是,压缩前JS 文件编码应是UTF-8压完后,自动转成了,GBK

    之前一直用grunt uglify 相对来说配置比较简单,grunt  google closure-compiler 配置比较麻烦,可以直接使用,compiler jar 包 配一下java 系统变量,在控制台敲命令

    java -jar  路径/compiler --js  路径/XXX.js  --js_output_file  路径/XXXX.min.js (webstorm 打开控制台,相对于项目根路径)

2  编缉器乱码

   编辑器这块 像webstrom 有时打开JS文件时出现乱码,主要原因是,打开文件时使用编码有问题,比如,JS文件是 GBK 而用webstrom 打开时却是UTF-8 就会出现乱码问题,

   解决方案,reload  一下,(而不是convert)

3 与服务器通信乱码

    这块情形比较多,常见的原因也有很多分具体情况,提前说一句,大家都知道用什么格式编的码就要用什么格式解码,可是还是乱这是为什么?主要原因是忽略了一点,并且

    很多人分不清楚页面编码与文件编码及 标签charset 之间混乱的关系(当然清楚的话就不会乱。。。),下面分开来说这块,

   1) js 使用encodeURIComponent 或者encodeURI 进行编码进行AJAX提交时,服务端乱码

          通常后端人员习惯根据页面编码 decode  如果页面是UTF-8还好,要是GBK那肯定是要乱掉的,因为JS使用上面两个函数编码时用的是UTF-8 ,所以后端人员一定要用 U TF-8 去解码,这个根页面的charset 设置是没有关系的,

   解决方案: 后端接时使用UTF-8 进行解码

  2)js ajax 提交页面原有的后端编码后的中文,

         某些情况下页面会初始化一下变量比如编码后的中文,作为一个默信参数项,这种情况下,后端可能会用根页面charset 一致的编码比如 GBK, 这时ajax 提交只是把原有的值传给了服务端,服务端就要用当初初始化变量时的编码解码,

      解决方案,当初怎么编的码解的时候就怎么解(。。。)

3) form 表单提交中文乱码

     form 表单提交时,本身没有charset 设置时是根据页面的charset 类型编码的,所以需要后端解码时按页面编码来,

     (先挖个坑,后面补)

   

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值