同一页面引入多个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文件:
None.gifvar str = '这是一个GB2312编码文件。';
None.gif
var description = 'this file saved as GB2312 encoding.';
    可以在选择编码为GB2312的IE中正确的被引用。

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

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

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

    测试文件下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单盘点 CVPR2020 的图像合成论文

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 147 篇文章&#xff0c;本文大约 3500 字&#xff0c;阅读大约需要 10 分钟前言本文将简单盘点在 CVPR2020 上的图像合成方面的论文&#xff0c;然后给出下载地址以及开源代码 github…

react学习(53)--传参payload

this.props.dispatch({type: startpage/getStartPageByCode,payload: { code: this.props.location.query.code },callback: (res) > {this.setState({popupByCodeDetail: res.data,});},});

泛化、实现、依赖和关联的区别

传统应用程序设计中所说的依赖一般指“类之间的关系”&#xff0c;那先让我们复习一下类之间的关系&#xff1a;a、实现表示类对接口的实现。UML图中实现使用一条带有空心三角箭头的虚线指向接口&#xff0c;如下&#xff1a; b、泛化表示类与类之间的继承关系、接口与接口之间…

目标检测学习笔记

看完吴恩达老师的 deeplearning.ai 课程目标检测这节课程的学习笔记。 文章目录1. 目标定位(object localization)2. 基于滑动窗口的目标检测算法滑动窗口的卷积实现Bounding Box预测&#xff08;Bounding box predictions&#xff09;交并比&#xff08;Intersection over uni…

win8中完成进度

public sealed partial class WorkItem : Page{private IAsyncAction _threadPoolWorkItem;private ManualResetEvent _sleep new ManualResetEvent(false);public WorkItem(){this.InitializeComponent();}// 在线程池中找一个线程去执行指定的方法&#xff0c;并指定其优先级…

中小企业的软件需求问题

近年来&#xff0c;做为我国经济发展新兴动力的中小企业同时也成为了IT行业的热点市场。IT领域的顶级厂商在高端市场日趋饱和的情况下&#xff0c;正逐渐将眼光投向中小企业市场。而大多数IT厂商由于自身的资源和规模限制无法涉足高端用户&#xff0c;中小企业市场为这些厂商提…

数学学习笔记--线性代数

开始复习 AI 算法的基础–数学部分&#xff0c;主要是三方面的内容&#xff1a; 线性代数概率论微积分 参考内容如下&#xff1a; 《深度学习》https://github.com/scutan90/DeepLearning-500-questionshttps://github.com/sladesha/Reflection_Summary 本文是第一篇&#…

诺基亚S40手机联系人导入安卓手机

电话号码较少的话比较简单&#xff0c;拷贝到SIM卡中通过SIM卡中转&#xff0c;只是一般SIM卡只能存储200个左右&#xff0c;联系人比较多的情况就麻烦一点&#xff0c;今天帮导师把诺基亚5220中的800个电话转到三星S4中&#xff0c;综合下来还是使用了这种方法&#xff1a; 诺…

科技馆游记(精华)-------- double篇

科技馆之流水帐乱弹 时间: 公元2005年5月3日 人物: 饭团 (男主角), double (女主角), 路人甲乙丙丁… 地点: 繁华的大都市上海 天气不错, 挺风和日丽的, 饭团和double都没有课。顺便一说&#xff0c;居然交大连国定的五一假期中都要补课&#xff0c;所以饭团这次百忙之中抽空跟…

远程桌面不能连接,提示awgina.dll取代错误的解决办法

远程桌面不能连接&#xff0c;错误提示&#xff1a;您不能初始化一个远程桌面连接&#xff0c;因为在远程计算机上的windows登录软件被不兼容的软件c:\windows\system32\awgina.dll取代&#xff0c;如下图所示&#xff1a; 原因&#xff1a;如果计算机中装有SymantecpcAnywhere…

数学学习笔记--概率论

2. 概率论 2.1 概率分布与随机变量 2.1.1 机器学习为什么要使用概率 事件的概率是衡量该事件发生的可能性的量度。虽然在一次随机试验中某个事件的发生是带有偶然性的&#xff0c;但那些可在相同条件下大量重复的随机试验却往往呈现出明显的数量规律。 机器学习通常必须处理…

官方文档很强大!!!学会阅读技术文档的能力(vuex)

我是歌谣 放弃很容易 但是坚持一定很酷 在我们的日常 我们在学习一个新的知识点 的时候 不免就需要我们有阅读文档的能力 了解vuex的产生 比如我们在学习Vuex的时候 最近开始接触新项目了 需要学习一个新项目 了解一个新的知识点 最近主要攻关Vuex这一部分的内容 看看别人封装…

读《.NET本质论》样章有感

这两天抽空看了一下《.NET本质论》&#xff0c;确实是一本经典的好书。如果说《Thinking in Java》是Java中从入门到精通的经典书籍的话&#xff0c;那么《.NET本质论》将是一本深入研究.NET技术的不可多得的佳作。我实在是不知道该如何评价这样一本好书&#xff0c;所以将多次…

PHPmysqli的 预处理执行查询语句

1 header( Content-Type:text/html;charsetutf-8 ); 2 require prepareSrarment.php;3 $mysqlinew mysqli("localhost", "root", "password, "user1", 3306);4 $mysqli->set_charset("utf8");5 //使用预编译从数据库中查询6 /…

vue一步一步带你封装一个按钮组件

# 前言 本文主要对子组件的封装做一个了解 首先我们直接看一下代码显示 首先是今天有一个学妹 过来问我如何封装子组件 # 实现效果 首先这个组件是基于eleemnt-ui进行封装的 我们看一眼实现效果 有了实现效果 之后 我们一起来看看他的父子组件 有了实现效果 之后 我们一起来看…

机器学习基础--一些基本的概念

前言 开始重新巩固一下机器学习的内容&#xff0c;先从基本的一些概念和定义开始。 本文介绍的内容如下所示&#xff1a; 机器学习的基本定义局部最优和全局最优机器学习、深度学习、数据挖掘、大数据之间的关系为什么要使用机器学习 1. 机器学习的基本定义 机器学习算法是…

COM组件简介

面向对象的思想难以适应这种分布式软件模型&#xff0c;于是组件化程序设计思想得到了迅速的发展。 按照组件化的程序设计的思想&#xff0c;复杂的应用程序被设计成一些小的&#xff0c;功能单一的组件模块&#xff0c;这些组件模块可以运行在同一台机器上&#xff0c;也可以运…

域名与国家对应表

本文转自 CBuilder 研究 - http://www.ccrun.com/other/go.asp?i240&d6dx0tl.ac – Ascension Island.ad – Andorra.ae – United Arab Emirates.af – Afghanistan.ag – Antigua and Barbuda.ai – Anguilla.al – Albania.am – Armenia.an – Neth…