Unicode码扩展自ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。Unicode最初打算作为ASCII的补充,可能的话,最终将代替它。考虑到ASCII是电脑中最具支配地位的标准,所以这的确是一个很高的目标。
ASCII适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。
Unicode码:Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。
Unicode的最初目标,是用1个16位的编码来为超过65000个字符提供映射。但这还不够,它不能覆盖全部历史上的文字,也不能解决传输的问题(implantation head-ache's),尤其在那些基于网络的应用中。已有的软件必须做大量的工作来实现16位的数据。
因此,Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分,例如,在UTF-8和ASCII中,“A”的编码都是0x41. UTF-16和UTF-32分别是Unicode的16位和32位编码方式。考虑到最初的目的,通常说的Unicode就是指UTF-16。
Unicode字符集可以简写为UCS(Unicode Character Set)。早期的Unicode标准有UCS-2、UCS-4的说法。UCS-2用两个字节编码,UCS-4用4个字节编码。
UTF8并不算是一种电脑编码,而是一种储存和传送的格式
以"I am Chinese"为例
用ANSI储存:12 Bytes
用Unicode/UCS2储存:24 Bytes + 2 Bytes(header)
用UCS4储存:48 Bytes + 4 Bytes(header)
以"我是中国人"为例
用ANSI储存:10 Bytes
用Unicode/UCS2储存:10 Bytes + 2 Bytes(header)
用UCS4储存:20 Bytes + 4 Bytes(header)
由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输(中文稍为合算一点
有见及此,Unicode/UCS的压缩形式--UTF8出现了:
1.每个英文字母、数字所占的空间为1 Byte!!!
2.泛欧语系、斯拉夫语字母占2 Bytes!!!
3.汉字占3 Bytes!!!——规定的!!!
由此可见UTF8对英文来说是个非常诱人的方案,但对中文来说则不太合算,无论用ANSI还是 Unicode/UCS2来编码都只用2 Bytes,但用UTF8则需要3 Bytes。
因此可以明白,java中的字符,字符串是使用unicode编码,占两个字符,可以容纳一个中文(而byte只有一个字节,不能容纳中文)。而中文字符串的getByte方法可以返回指定或默认的编码方式后得到的字节数组。如果为一个中文指定GBK等解码格式,可以返回2个字节的字节数组。如果不指定解码格式,会使用系统默认的utf-8,因此会返回三个字节的字节数组!!
分享到:
相关推荐
php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换。
打开txt文件,自动识别编码格式ansi,unicode,unicode-BE,utf8,utf8-BOM,并转换为unicode显示到edit
最近需要对Linux与Windows平台下的字符传输出现乱码,对...参考了网上的UTF-8/UTF-16转换的资料,只有0x10000以下的Unicode编码进行了转换;对其代码进行了修改和补充,可以实现所有的UTF-8/UTF-16的转换,分享给大家。
unicode,gbk,utf-8等编码方式的介绍,简单举例,资料为网上收集整理。
字符编码笔记:ASCII-Unicode和UTF-8 字符编码笔记:ASCII-Unicode和UTF-8 字符编码笔记:ASCII-Unicode和UTF-8
Unicode字符的UTF-8、UTF-16、UTF-32编码方式[总结].pdf
Unicode --> UTF-8 UTF-8 --> ANSI UTF-8 --> Unicode UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码进行转换 unicode转别的,首先检验BOM,不合格不转换 utf8转别的,首先检验BOM,不...
Unicode转UTF-8
各种文本转到 unicode utf-8 gb2312 编码 unicode utf-8 gb2312 编码转换到文字。
UTF-16汉字编码表,txt格式的
内容为utf8编码和unicode编码相互转换的C代码,关于utf8和unicode的用途另一篇博客有介绍,请参考。 压缩包 : ntf_code.rar 列表 ntf_code\uni_utf8.h ntf_code\utf8_u.c ntf_code\utf82u.c ntf_code\u2utf8.c ntf_...
文件里有详细的代码,编码格式选择UTF-8编码,亲测在linux下可以直接运行。泰文在osd输出的流程一般是泰文先转换成Unicode编码,然后调用freetype进行文字渲染叠加
iOS 显示汉字的Unicode和UTF-8编码
PowerBuilder9.0开发环境下,可以把UTF-8的编码转换为Unicode的编码格式,在pb9.0环境下测试通过。
utf-8 unicode gb2312 汉字编码
文本字符串编码在 Text、ANSI、Unicode、Unicode Big Endian、UTF-8、 UTF-7 之间的互相转换,转换结果使用十六进制表示。
UTF8-UNICODE-ANSI之间相互转换的小工具,很适用的。
将文本从unicode_escape编码转换为UTF-8编码
lvgl unicode 转 utf-8小工具
C语言字符编码转换UNICODE、GBK、UTF-8互相转换