浅谈JavaScript字符集

  JavaScript是区分大小写的:

  关键字、变量、函数名、和所有的标识符都必须采用一致的大小写(一般我们都是写成小写的),这样和当初学C#的多样式写法有很大的区别。

  比如:(这里以变量str和Str为例)

  

复制代码 代码如下:

  var str='abc';

  var Str='ABC';

  alert(str);//输出abc

浅谈JavaScript字符集

  假如str与Str为同一变量,那么alert(str);,输出的结果应为为ABC而不是如上图所示abc。这恰恰说明:JavaScript是区分大小写的。

  Unicode转义序列

  Unicode字符集的出现是为了弥补ASCII码只能表示128个字符的限制,而日常中我们想显示汉字和日文的话,显然ASCII是不可能的了。所以说Unicode是ASCII和Latin-1的超集。首先,JavaScript程序都是用Unicode字符集编写而成的,但在一些计算机硬件和软件里根本无法完整地显示或者输入Unicode字符全集(比如:é),为了解决这一现象JavaScript定义了一种特殊序列,这种序列使用6个ASCII字符来代表任意16位Unicode内码,这种特殊序列统称为Unicode转义序列,它均以\u为前缀,其后跟随4个十六进制数

  比如:

  

复制代码 代码如下:

  var str='caf\u00e9';

  var Str='café';

  alert(Str+' '+str);// 可以看出显示都是一样的效果。

  alert (Str===str);//输出true

浅谈JavaScript字符集

浅谈JavaScript字符集

  但我们应该注意一点,Unicode是允许多种方法对同一字符进行编码的,用上述的é转义的例子来说明:

  é:

  1.可以使用Unicode字符\u00E9表示

  2.亦可用e\u0301(语调字符)表示

  

复制代码 代码如下:

  var str='caf\u00e9';

  var Str='cafe\u0301';

  alert(str+' '+Str); //如下图所示,Str和str所输出的结果都是一样的

  alert(Str===str); //结果是一样的,可它们的二进制编码表示根本不一样,所以输出false

  虽然显示在文本编辑器上的结果是一样的,可是它们的二进制编码表示根本不一样,而编程语言最终都会转化为本地平台的计算机机械码(二进制编码),计算机只能通过对二进制编码的比较才能得知结果,所以它们比较最终的结果只能是false

  所以这正是 “Unicode是允许多种方法对同一字符进行编码的”最好的解释,因为Unicode标准为所有字符定义了一个首选的编码格式以便于将文本转化成统一格式的Unicode转义序列以合适比较

  再次以é为例:

  比较facé与café中的é是否相同?

  facé与café中的é都转化为\u00E9或者都转化为e\u0301,才能比较facé与café中的é