同一页面引入多个JS文件的编码问题

简介:
   原来只是觉得IE解析HTML文件的时候,需要知道其传输编码,才能正确处理,而从来没有在意过JavaScript文件的编码问题。结果今天发现同一页面中的多个JavaScript文件如果保存编码不同,也会有出错的问题。这个一般怎么会遇到呢?

    原来写的js文件,从来没有关心过他们的编码问题。可是后来不知怎么的,发现一些单独都好使得文件,被同时引用到一个页面中时,就错误不断,根本不能执行。Debug半天,原来是文件编码问题搞得鬼。

    一般我们在中文OS中保存文本文件,默认都是一GB2312编码保存的,比如VS.NET 2003,2005都是这样。可是当我们在脚本代码中写有"©"这些符号后,保存文件会提示让你保存为Unicode格式。如果你不加理会,仍然保存为GB2312,那么下次打开这个文件你会发现"©"变成"?"@_@。这样的字符还有一些,比如在Windows中的高位ASCII字符,它们的Unicode定义就是一些比较怪异的字符,如果用GB2312强行存这些字符,打开后会被两两合并为汉字或成为乱码。

    回到我们脚本文件编码的问题上来,如果我们在同一个页面中引用多个JavaScript文件,而这些文件的保存编码又不同(有GB2312有又Unicode),就可能出错。当然不是总都出,这也是最要命的。由于对于7bit ASCII码,不管什么编码都是通用的,也不会有解码问题,可是如果文件里包含了汉字,就有可能出错了。

    比如,GB2312保存的js文件:
var str = '这是一个GB2312编码文件。';
var description = ' this file saved as GB2312 encoding.';
    可以在选择编码为GB2312的IE中正确的被引用。

    Unicode编码保存的js文件:
var strW = '这是一个Unicode编码文件。';
var descriptionW = ' this file saved as Unicode encoding.';
    可以在选择编码为Unicode的IE中正确的被引用。

    而这两个文件在下列引用中,不管怎么选择IE编码也是不能正确执行结果:(
< html >
< head >
     < title >Test Encode </ title >
     < script  src ="Unicode.js"  language ="javascript" ></ script >
     < script  src ="GB2312.js"   language ="javascript" ></ script >
</ head >
< body >
< script  language ="javascript" >
    alert(strW 
+  '\r\n'  +  descriptionW);
    alert(str 
+  '\r\n'  +  description);
</ script >
</ body >
</ html >

    不过如果js中只有低位ASCII字符,不同编码的文件引用到一个页面不会有问题。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
2月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
47 0
|
2月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
66 4
|
2月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
78 2
|
3月前
|
JavaScript 前端开发 数据安全/隐私保护
混淆指定js文件
【9月更文挑战第26天】JavaScript 混淆旨在保护代码知识产权、减小文件体积和提高安全性。方法包括变量名和函数名混淆、代码压缩、控制流平坦化及字符串加密。常用工具如 UglifyJS 和 JScrambler 可实现这些功能。然而,混淆可能带来兼容性和调试困难等问题,需谨慎使用并确保法律合规。
|
2月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
188 0
|
2月前
|
JavaScript 前端开发 API
JavaScript全屏,监听页面是否全屏
JavaScript全屏,监听页面是否全屏
66 0
|
2月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
39 0
|
2月前
|
存储 JSON JavaScript
JavaScript动态渲染页面爬取——Pyppeteer爬取实战
JavaScript动态渲染页面爬取——Pyppeteer爬取实战
42 0
|
3月前
|
JavaScript 前端开发
[收藏]用JavaScript让弹出页面以最小化的形式出现在状态栏中
[收藏]用JavaScript让弹出页面以最小化的形式出现在状态栏中