解决JS外部文件中文注释出现乱码问题


Posted in Javascript onJuly 09, 2017

问题描述

中文乱码在Java Web开发中经常出现,这是由于不同的部分编码不一样造成的,一般在开发中,我们把所有能设编码的地方,全部设置成UTF-8,但是有时候还是会出现乱码的情况。在开发中,一般把js代码从html中抽出来,放到一个js文件中,js文件中包含中文,在浏览器中页面没有出现乱码,一切正常,当我们打开源码点进js文件,我们发现js文件中的中文注释和js代码中的中文全是乱码。

问题原因 

我们没有告诉浏览器,当前的文件使用何种编码,浏览器默认使用的的GBK编码,但是我们js文件使用的UTF-8的编码,当然会出现乱码了,有的同学会问了,为什么页面没有出现,那是因为我们在页面里面加上以下代码:

<meta content="text/html; charset=UTF-8" http-equiv="content-type">

或者:

<meta charset="utf-8">

这就告诉了浏览器,你用UTF-8来渲染这个页面,我们这个页面是用UTF-8来编码的,这个时候就是正常显示的。或者是在Java代码中使用下面的代码:

response.setContentType("text/html;charset=UTF-8");

这也是相当于告诉浏览器,当前使用的UTF-8编码。

解决方案

聪明的同学已经想到了,我们要告诉浏览器,当前文件的编码格式,在页面中,我们可以使用上面的三种方式来告诉浏览器当前页面的编码,但是在js文件中,使用不了。咋办?其实很简单,我们可以在web.xml中,使用一个过滤器,来对所有的的响应设置编码格式为UTF-8:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

上面的过滤器,对所有的请求响应设置的编码为UTF-8。

清除一下浏览器缓存,刷新一下,我们发现已经能够正确的显示中文了。

说明一下,前提是所有的文件编码是UTF-8。

以上所述是小编给大家介绍的解决JS外部文件中文注释出现乱码问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
Dec 27 Javascript
javascript多种数据类型表格排序代码分析
Sep 11 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
StringTemplate遇见jQuery冲突的解决方法
Sep 22 Javascript
js实现的map方法示例代码
Jan 13 Javascript
jquery获取当前元素索引值用法实例
Jun 10 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
Bootstrap table使用方法总结
May 10 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
Sep 11 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 #Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 #jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 #jQuery
详谈javascript精度问题与调整
Jul 08 #Javascript
javascript定时器取消定时器及优化方法
Jul 08 #Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 #Javascript
JQuery 获取Dom元素的实例讲解
Jul 08 #jQuery
You might like
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
python中实现控制小数点位数的方法
2019/01/24 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
《画家乡》教学反思
2014/04/22 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
保密工作整改报告
2014/11/06 职场文书
老公婚前保证书
2015/02/28 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python