ascii160 和 ascii32 的区别

来源:互联网 发布:南笙的淘宝店 编辑:程序博客网 时间:2024/06/01 07:31
 好久没有写点东西了,忙得都没时间去写。但是今天遇到一个问题,头疼了好一阵子,不过还好,最终还是找到问题的,感觉这个问题还有些的必要,在百度里查了很多关于这个的关键字,都没有查到,只有在google里简单的找到一些,所以想把这个记录下来,共大家分享。

       大家都知道一个ascii码会对应一个字符,比如ascii码97表示a(注意是小写)等,但是平时大家都很少注意到ascii码里有连个空格(space), 一个是ascii码32,一个是ascii码160,那么这个两个都表示空格有什么区别呢。

       要说它们的却别,其实主要是是在IE和firefox的区别,说的再多,还是通过一个简单的例子来说明问题更直接了当。今天遇到一个Bug,以前运行的时候都没问题,都是升级后就出现问题了,我的代码都没有变过。

      有一段代码,是从别人的javascript code里返回个值,然后判断这个:

      if (attrBMCType == "Early Commit") {}

      就这个简单的判断,正常情况下,attrBMCType会返回"Early Commit", if条件应该为true,在firefox里测试的时候没有问题,但是换到用IE测试的时候就出新问题了,alert(attrBMCType), 发现在firefox里正常显示,但是在IE里却显示"EarlylCommit",奇怪,空格跑那里去了.原理是ascii码惹的祸。

      让我们来做另一个实验。javascipt里,String.fromCharCode()方法,会根据unicode字符返回一个字符串(这个也是在网上搜了好久才搜到的),我们就用这个方法来看看会有什么却别。

     var test = String.fromCharCode(112, 160, 108, 97, 32, 105, 110);

       同样的javascript代码,在firefox返回"p la in", 但是在IE里却返回"pla in",看到这里我想大家已经看到区别来了。然后再查查ascii码对照表,会发现ascii160和ascii32都表示空格,但是在IE里,160就不是显示空格,firefox里会显示空格,32不管是firefox里,还是IE里都显示空格。

原创粉丝点击