解决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 相关文章推荐
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
Mar 07 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
JavaScript获取网页中第一个链接ID的方法
Apr 03 Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
在HTML文档中嵌入JavaScript的四种方法
May 07 Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
vue+Element中table表格实现可编辑(select下拉框)
May 21 Javascript
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
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注入实例
2006/10/09 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
JS正则中的RegExp对象对象
2012/11/07 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
nodejs多版本管理总结
2018/04/03 NodeJs
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python多线程分块读取文件
2019/08/29 Python
Python 必须了解的5种高级特征
2020/09/10 Python
python的dict判断key是否存在的方法
2020/12/09 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
学习雷锋活动总结
2014/04/29 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
后勤个人工作总结
2015/02/28 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
反邪教观后感
2015/06/11 职场文书
小学运动会入场口号
2015/12/24 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
MySQL笔记 —SQL运算符
2022/01/18 MySQL
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS