原来只是觉得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字符,不同编码的文件引用到一个页面不会有问题。
    测试文件下载
posted on 2005-03-23 12:36 birdshome 阅读(2310) 评论(11)  编辑 收藏 引用 收藏至365Key 所属分类: Jscript&Dhtml开发
 
评论
# re: 同一页面引入多个JS文件的编码问题  回复    
还要和aspx的页面编码相同,现在aspx页面一般都采用utf8编码,所以js引入时经常会出错。实际只要保证编码一样就可以了。将所有的文件都存成utf-8的,基本就不会有问题了。 
看来你现在专门研究js了。 
2005-03-23 14:23 | ocean 
# re: 同一页面引入多个JS文件的编码问题  回复    
我现在一般都是把js文件改成.aspx后缀来调用了,这样就不会再出现编码的问题,之前被这个问题折腾了好长一段时间,现在终于算是好了。 
2005-03-23 15:45 | bobo 
# re: 同一页面引入多个JS文件的编码问题  回复    
web.config 
<globalization 
requestEncoding="utf-8" 
responseEncoding="utf-8" 
/> 
gb2312 
gb2312 
2005-03-23 15:50 | Microshaoft 
# re: 同一页面引入多个JS文件的编码问题  回复    
类似的问题我也遇到过,里面有中文注释就出错!
于是乎我把注释都删除了!~ 
2005-03-23 16:18 | Boler 
# re: 同一页面引入多个JS文件的编码问题  回复    
这个问题我前不久实施项目的时候碰到过。还好知道怎么解决(一阵捣鼓,到处设编码。。。)。
现在有个习惯是基本上独立的 js 文件里不写中文。 
2005-03-23 18:52 | 木野狐 
# re: 同一页面引入多个JS文件的编码问题  回复    
你可以把所有的单独的js文件都用记事本打开,然后选择另存为,编码使用utf-8保存就能和aspx一起正常使用了 
2005-03-24 09:26 | srz 
# re: 同一页面引入多个JS文件的编码问题  回复    
把@写成 asc 码 @#169。
gb2312的处理还好办,utf-8的处理很麻烦的。
2005-03-24 14:11 | GirlSpicy 
# re: 同一页面引入多个JS文件的编码问题  回复    
如果你使用服务器端的程序也好办,可以使用宽字节转换。 
2005-03-24 14:16 | GirlSpicy 
# re: 同一页面引入多个JS文件的编码问题  回复    
hammer!~~这个问题上次我们一起做项目的时候不就已经知道了吗?怎么这么不长记性~~~~~ 
2005-04-08 12:53 | workingbird 
# re: 同一页面引入多个JS文件的编码问题  回复    
我在日文下也碰到此问题,但是我把2个javascript文件都改成utf8还是错, 
上传到2个服务器上,一个正常,另一个出错,为什么呢? 
2005-06-28 12:19 | mad8 
# re: 同一页面引入多个JS文件的编码问题  回复    
这问题我也曾经遭遇过,我的apsx页面都是utf-8的,因为特定时间段访问量巨大,服务器配置烂又要求即时,所以能省就省啊,凡事需要JS里要用到高位字符全部抽到一起,然后将所有仅含ASCII字符的文件保存为ASCII编码格式,带高位字符的保存为utf-8,另外还开启压缩放到缓存里去,总觉得有点BT,好抠门的说。

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

  1. Thymeleaf模版--子页面单独引入CSS、JS文件

    https://blog.csdn.net/u010392801/article/details/80465800 ****************************************** ...

  2. 当页面有多个js文件时,应如何引入?

    1. 我们知道如果一个页面有多个js文件,并且这些js文件有的还有依赖关系的时候,我们就要特别注意他们之间的引入顺序,否则就会报错. 如:一个js文件依赖jquery,我们就要先引入jquery,然后 ...

  3. jsp页面引入不了js路径没错

    最近搞开发,发现有个jsp页面引入不了js:很是神奇,路径什么的都没问题,同事的浏览器可以加载该js,发现放到其他的文件夹下可以加载该js:当时没研究出来,任务紧就没研究了. 最近闲下来了,有去研究, ...

  4. 360浏览器兼容模式下jsp页面访问不到js文件

    360浏览器兼容模式下jsp页面访问不到js文件 查看自己js中的语法问题,不要用ES6的语法,编译不了故找不到js文件 const var of 码出高效 java 比较 所有整型包装类对象之间值的 ...

  5. 使用时间戳引入css、js文件

    前言 最近在一家创业公司实习,主要负责新版官网和商家平台管理系统的前端开发和维护,每次测试都要上传文件到ftp服务器端测试,初期由于更新修改比较频繁,每次都是直接上传覆盖css.js.php文件,链接 ...

  6. [工具配置]requirejs 多页面,多入口js文件打包总结

    需要明确以下几点: 1.本地前端调试代码肯定是调用原始的路径以及代码,但是线上运行的肯定是通过打包后的另一个路径,这儿就是生成的dist文件夹了. 2.requirejs的引入,线上跟线下的路径怎么控 ...

  7. 由js文件中引入另外的js文件想到的

    1. html中,使用<script src="../static/js/xxx.js"></script>引入js文件.   2. 在js文件中,引入js ...

  8. 解决加载WEB页面时,由于JS文件引用过多影响页面打开速度的问题

    1.一般做法 一般我们会把所有的<script>元素都应该放在页面的<head>标签里,但由于是顺序加载,因此只有当所有JavaScript代码都被依次下载.解析和执行完之后, ...

  9. 在HTML页面中加载js文件和css文件的方法

    1.在HTML页面加载js文件的方法: function loadScriptFile(filePath){ var script = document.createElement("scr ...

随机推荐

  1. 几种优化web页面加载速度的策略

    剥离静态资源请求到CDN 一般在主域名下的HTTP请求里都会携带大量Cookie信息,最大4KB,每个域名下最多50条:但如果仅仅访问js/css/jpeg等静态资源文件的话是不需要Cookie信息, ...

  2. (转)automaticallyAdjustsScrollViewInsets(个人认为iOS7中略坑爹的属性)

    转自http://m.blog.csdn.net/blog/humingtao2013/27662093 automaticallyAdjustsScrollViewInsets(个人认为iOS7中略 ...

  3. UVa-208 Firetruck (图的DFS)

    UVA-208 天道好轮回.UVA饶过谁. 就是一个图的DFS. 不过这个图的边太多,要事先判一下起点和终点是否联通(我喜欢用并查集),否则会TLE. #include <iostream> ...

  4. PAT Basic 1030

    1030 完美数列 给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列. 现在给定参数p和一些正整数,请你从中选择尽可能多的数 ...

  5. C#中何时使用dynamic

    背景:比如说,有一个方法,有很多参数,且有时候只需要其中的某几个参数,有时候需要使用全部,甚至有时候一个都不需要,这时候写一个长长的参数列表一点都不酷,且容易 出错,这时候就需要考虑C#的dynami ...

  6. 笛卡尔&小雷:科学发展有规律,研究科学有方法

    一直在总结自己的学习和研究方法,最近在读吴军写的<文明之光> ,感觉这篇介绍笛卡尔的内容非常有价值,特此整理.最近开始在密谋自己的理论体系,低调实施中...  笛卡尔按照感知的方式,把人的 ...

  7. unittest的discover方法使用

    使用unittest进行测试,如果是需要实现上百个测试用例,把它们全部写在一个test.py文件中,文件会越来越臃肿,后期维护页麻烦.此时可以将这些用例按照测试功能进行拆分,分散到不同的测试文件中. ...

  8. iOS WKWebView

    Webkit 是 iOS 8.0 后提供的新的框架,组件WKWebView比较UIWebView 速度更快.占用内存更少了,可支持性更多 WKWebView可通过KVO监听属性 title.estim ...

  9. git删除本地所有的更改

    删除本地所有为暂存的修改: git checkout -f 如果有修改以及加入暂存区的话 那么 使用如下命令: git reset --hard git clean -xdf

  10. windows和ubuntu14.04双系统设置默认启动项

    首先开机或者重启,在启动项选择菜单处记住win7对应的序号,从上至下的序号从0开始计数,我的win7系统选项处于第5个,那么序号就应该是4,记住后,打开ubuntu系统. 2 按下Ctrl+alt+T ...