在JavaScript中,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的。MDN DOMString 是一个UTF-16字符串。由于JavaScript已经使用了这样的字符串,所以DOMString 直接映射到 一个String 。
将 null 传递给接受DOMString的方法或参数时通常会把其stringifies为“null”。 引出的Unicode中UTF-8与UTF-16编码的详细了解Unicode编码Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。 通常Unicode编码是通过2 Byte来表示一个字符的,如U+A12B ,2 Byte的二进制表示方法结果就是1010(A)0001(1) 0010(2)1011(B) 。 需要注意的是:UTF是Unicode TransferFormat的缩写,UTF-8和UTF-16都是把Unicode码转换成程序数据的一种编码方式。 UTF-8UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多4个字节)。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。 UTF-8的来历UTF-8 的规范里充斥着这样神秘的句子:“第一个位元组由110 开始,接着的位元组由10 开始”,“第一个位元组由1110 开始,接着的位元组由10 开始”。
那么这到底是什么意思呢?为什么要这么做呢? 我们先从二进制说起。我们都知道,一个字节是由8 个二进制位构成的,最小就是0000 0000 ,最大就是1111 1111 。那么一个字节所能表示的最多字符数就是2 的8 次方,也就是256 。对于26 个英文字母来说,大小写全算上就是52 个,再加上10 个阿拉伯数字,62 个字符,用可以表达256 个不同字符的一个字节来存储是足够了。 但是,我们中国的常用汉字就有3000 多个,用一个只能表达256 个字符的字节显然是不够存储的。至少也需要有2 个字节,1 个字节是8 个二进制位,2 个字节就是16 个二进制位,最多可以表达2 的16 次方,也就是256*256=65536 。65536 个字符足够容纳所有中国的汉字,外带日语、韩语、阿拉伯语、稀其古怪语等等各种各样的字符。所以这样就产生了Unicode ,因为它用2 字节表示字符,所以更严格来讲应该叫UCS-2 ,后来因为怪字符太多,2 字节都不够用了,所以又搞出来了一个4 字节表示的方法,称作UCS-4 。不过现在对绝大多数人来讲UCS-2 已经是足够了。 Unicode 本来是一个好东西,用2 字节表示65536 种字符,全人类皆大欢喜的事情。但是偏偏有一帮子西洋人,非要认为这个东西是一种浪费,说我们英文就最多只需要26 个字母就够了,1 个字节就够了,为什么要浪费2 字节呢?比如说字母A 就是0100 0001 ,这一个字节就够了的东西,你弄2 字节,非要在前面加8 个0 ,0000 0000 0100 0001 ,这不是浪费吗?我们就偏要用1 字节表示英文。
好吧,我们全人类只好做妥协,规定每个字节,只要看见0 打头的,就知道这是英文字母,这肯定不是汉字,只有看见1 开头的,才认为这是汉字。 但是我们汉字用1 个字节表示不下,那好办,用2 个1 开头的字符表示1 个汉字。这样本来16 个二进制位,减去2 个开头的1 ,只剩下14 个二进制位了,2 的14 次方就是16384 个字符,对于中文来讲,也是足够用了。但是无奈他们还是想表达65536 种字符,那怎么办呢?就需要3 个字节才能容纳得下了,于是UTF-8 粉墨登场。 首先,首位为0 的字符被占了,只要遇到0 开头的字符,就知道这是一个1 字节的字符,不必再往后数了,直接拿来用就可以,最多表示128 种字符,从0000 0000 到0111 1111 ,也就是从0 到127 。
TOOBUG(开发工程师)-本文作者
一个毫无志向的程序员,我就是我,不是toobug
538
0
2019-7-8 11:06
扫一扫关注官方微信号
一手信息资讯权掌握尽在码云社
滚动新闻
-
-
-
后端
luioxiao1122/2019-02-27
-
-
热点资讯
2019-02-25
0
最近微博上一张图火了网友们看后纷纷表示程序员的确是太辛苦了随时随地都带着电脑修漏
|