字符与UNICODE编码

来源:互联网 发布:分离js 编辑:程序博客网 时间:2024/04/28 07:41

星爷为了接近秋香,在小强的帮助下终于顺利被华府录用,并有了员工号“9527”……

 

Coding(编号)和Encoding(编码)

 

如果把星爷比做一个字符,那么给星爷指定员工号“九千五百二十七”这个数字的过程可以被称为coding。

OK,现在星爷有编号了,接下来要在星爷的前胸后背各贴一块布,上书9527四个大字。这时候问题就出来了,这块布需要有多长?假如为了让别人容易看清,华府规定每个数字需要用一寸长的布,那么星爷的这块布至少需要四寸长。而早期进入华府的某资深家丁,其编号为8,那么该资深家丁是用一寸长的布写一个8字,还是全华府统一标准,用四寸长的布来写0008?如果考虑到将来家丁过万,会需要五位的编号,那么是否需要现在就开始统一标准,所有家丁使用五寸长的布来写编号。这个问题就是encoding的问题了。

 

UNICODE、UCS-2、UTF-8

通常我们说UNICODE是一个编码系统,其实更准确的说法应该是编号系统(coding)。UNICODE解决的就是给每个家丁什么号码的问题。

而UCS-2和UTF-8才是编码系统(encoding),解决的是用多大的布来写编号,从左往右写还是从右往左写这样的问题。

UCS-2是Java采用的编码,所有字符都用两个字节来存储。如果华府采用UCS-2编码,那么所有家丁的员工号都写在四寸长的布上。

UTF-8也是非常常见的一种编码,但每个字符所需的字节数可能是不同的。如果华府采用UTF-8编码,那么星爷的员工号写在四寸长的布上,而该资深员工则只需要用一寸长的布。显然,这种编码比较节省布料。