资讯专栏INFORMATION COLUMN

javaScript中的Unicode

马忠志 / 2937人阅读

摘要:编码编码只能编码个字符,而中国汉子就有,这样显然不够的,然后中国推出编码,用了两个字节来编码。中国编码用了,那其他国家呢于是为了统一,推出了编码。编码都是不涉及计算机存储,传输的。避免上述情况的出现。对于补充平面的字符。

javaScript中的Unicode
踩坑 在做某个业务的时候,后端童鞋给到的某个字段的值大概都长这样 javascript " #u0008u0005u0012u001fu0012u001du0005星球大战u0006:原力觉醒 u000fu0008u0006u0012u000bu0012 张学友 u0008u0003u0012u0006u0012u0004Dior u0012u0008u0007u0012u000eu0012u000c英雄联盟" 对于这样的数据,我是拒绝的。对于这些 unicode,怎么解析呢?它到底是什么?
什么是编码

其实编码原理很简单,在计算中并非直接存储字符(英文、中文等),而是存储这些字符对应的一个数字,这些字符在网络传输的时候,也是传输字符对应的数字,编码就是将字符转化成相应的数字。

ASCII

大学C语言入门课程最先学习的知识,它用了一个字节的7位表示一个字符,比如字符A的ASCII码是65。ASCII码只用了7个bit编码,注定能编码的字符很少,只有128个。

Unicode编码

ASCII编码只能编码128个字符,而中国汉子就有6000 +,这样显然不够的,然后中国推出GBK 编码,用了两个字节来编码。中国编码用了GBK,那其他国家呢?于是为了统一,推出了Unicode编码。在1991年推出了UCS统一编码,实际应用的是USC-2,用了2个字节来编码,能编码65536个字符。JavsScript中的编码就是用的这个编码方式。

编码都是不涉及计算机存储,传输的。但是在遇到两个字节编码的字符的时候,有个系统是大端顺序读取,Windows就是这样,而Mac上是按照小端顺序读取。如果没有个转化格式,那么就乱了,此时UTF(Unicode Transformation Format,简称为UTF)就产生了。因此,UTF-16使用了大端序(Big-Endian,简写为UTF-16 BE)、小端序(Little-Endian,简写为UTF-16 LE)以及BOM(byte order mark)的概念。避免上述情况的出现。

JavaScript中的编码

JavaScript刚创建出来的时候,只有USC-2编码方式可选,所以就一只用了这个编码方式。上文也提到USC-2一开始使用了两个字节来编码,能够编码65536个字符,从0x0 - 0xFFFF,这个也被称为基本平面(BMP-—Basic Multilingual Plane)。但是后来发现这样的Unicode编码也是不够用,扩展了其他补充平面,从0x010000 - 0x10FFFF,共16个。对于补充平面的字符。对于UTF-16编码方式来说,在0x0 - 0xFFFF之间的编码方式直接使用了2个字节,而补充平面使用了4个字节来编码,其中前两个字节范围是0xD800 - 0xDBFF,后两个字节范围是0xDC00 - 0xDFFF。通过下面的方式完成映射:

H = Math.floor((c-0x10000) / 0x400)+0xD800 
L = (c – 0x10000) % 0x400 + 0xDC00
USC-2编码的那些坑
var text = "           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95138.html

相关文章

  • 通过javascript进行UTF-8编码

    摘要:通过进行编码的字符集程序是使用字符集编写的。这种情况下,我们必须就要通过程序将的字符串转为编码的字符串。英文占个字符,汉字占个字符然而,的编码结构长度是根据某单个字符的大小来决定长度有多少。把英文字母转为编码。 通过javascript进行UTF-8编码 javascript的字符集: javascript程序是使用Unicode字符集编写的。Unicode是ASCII和Latin-...

    jone5679 评论0 收藏0
  • Unicode中UTF-8与UTF-16编码详解

    摘要:概念是一种针对的可变长度字符编码,又称万国码。通过上面的介绍我们可以知道,是一种非常通用的可变长字符编码方式。概念是字符编码五层次模型的第三层字符编码表,也称为的一种实现方式。 概述 本文通过介绍Unicode编码以及对应的两种编码方式UTF-8和UTF-16,让读者能够了解关于字符串编码的相关知识,同时能够弄清楚Unicode和UTF-8和UTF-16之间的关系。 本文的主要内容为:...

    cod7ce 评论0 收藏0
  • JavaScript 的内部字符编码是 UCS-2 还是 UTF-16

    摘要:二和之间的不同和都是的字符编码方式。提示如果你喜欢阅读关于的内部字符编码,可以,这里更详细解释了实际的问题,以及提供了解决方法。 对于 JavaScript 使用的是 UCS-2 还是 UTF-16 这个问题,我找了很久,没有发现一个权威的回答,我决定自己研究一下它。这个回答来自于你对 JavaScript 引擎或者对 JavaScript 语言的理解。 一、著名的 BMP(Basic...

    BlackHole1 评论0 收藏0
  • 细说Unicode(二) UnicodeJavaScript的纠葛

    摘要:受到这个的影响,中的字符操作函数某些情况无法返回正确的结果。的码点,还有另外一种表示方法,称为进制转义序列。这与我们的认知有点不同,我们通常认为一个表情符号也是一个字符,长度为。而如果通过来判断字符串长度显然是不够准确的。 大家对上一篇文章中提到的UCS编码可能比较陌生。殊不知这就是JavaScript采用的编码方法。 既然Unicode已经统一了天下,为什么JavaScript不采用...

    Achilles 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<