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,因此会返回三个字节的字节数组!!
分享到:
相关推荐
Unicode 字符的 UTF-8、UTF-16、UTF-32 编码方式 Unicode 字符集是计算机上使用的一种字符编码,它为每种语言中的每个字符设定了统一并且唯一的二进制代码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode...
在IT领域,字符编码是处理文本数据的基础,不同的编码方式决定了如何存储和解析字符。本文将深入探讨PHP中的字符编码转换,特别是针对ANSI、Unicode(包括Little Endian和Big Endian)、UTF-8以及UTF-8+BOM的转换。 ...
打开txt文件,自动识别编码格式ansi,unicode,unicode-BE,utf8,utf8-BOM,并转换为unicode显示到edit
在IT行业中,理解不同字符编码体系的重要性不言而喻,特别是Unicode、GBK和UTF-8这三种编码方式。下面将详细介绍这三种编码方式,并通过实例进行解析。 首先,Unicode是国际组织制定的一种标准字符集,旨在包含世界...
UTF-8,即“统一字符集的8位无符号格式”,是一种变长编码,可以表示Unicode字符集中所有的字符。对于ASCII字符(如英文字符),UTF-8只用一个字节,而对于非ASCII字符,如汉字,可能需要2到4个字节。UTF-8的最大...
UTF-16(Unicode Transformation Format-16bit)是一种用于表示Unicode字符集的编码方式。它通过16位或32位来存储每一个字符,主要用于解决ASCII、GBK等传统编码无法覆盖全球所有语言文字的问题。与UTF-8相比,UTF-...
《深入理解Unicode与UTF-8编码》 Unicode是一种字符编码标准,它的目标是为世界上所有文字提供一个统一的编码方式,使得计算机可以处理各种语言的文字。这个标准在信息技术领域具有广泛的应用,尤其在网络通信和...
Unicode --> UTF-8 UTF-8 --> ANSI UTF-8 --> Unicode UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码进行转换 unicode转别的,首先检验BOM,不合格不转换 utf8转别的,首先检验BOM,不...
最近需要对Linux与Windows平台下的字符传输出现乱码,对...参考了网上的UTF-8/UTF-16转换的资料,只有0x10000以下的Unicode编码进行了转换;对其代码进行了修改和补充,可以实现所有的UTF-8/UTF-16的转换,分享给大家。
ANSI、Unicode和UTF-8是三种常见的字符编码格式,它们各有特点并适用于不同的场景。了解这些编码之间的转换对于开发跨平台的软件至关重要。 1. ANSI编码:ANSI(美国国家标准协会)编码通常指的是基于特定地区的...
UNICODE,也称为Unicode Transformation Format(UTF),是一种标准的字符编码,旨在表示世界上所有语言的每一个字符。它使用数字来表示每个字符,并有多种编码方式,如UTF-8、UTF-16和UTF-32。其中,UTF-8是最常用...
在处理Unicode编码,如UTF-8时,StdioFile扮演着至关重要的角色。UTF-8是一种广泛使用的字符编码,能表示Unicode字符集中的所有字符,且与ASCII兼容。在本主题中,我们将深入探讨如何使用StdioFile进行UTF-8编码的...
### JAVA字符编码详解:Unicode, ISO-8859-1, GBK, UTF-8 及其相互转换 #### 一、引言 在Java编程中,字符编码的管理和转换是一项基本而又重要的任务。不同的编码标准适用于不同的场景,而理解和掌握这些编码之间...
文件里有详细的代码,编码格式选择UTF-8编码,亲测在linux下可以直接运行。泰文在osd输出的流程一般是泰文先转换成Unicode编码,然后调用freetype进行文字渲染叠加
目前,最常用的UNICODE版本是UCS-4,但实际应用中更多的是采用兼容性更好的UTF编码形式。 **二、UTF-8编码** UTF-8是一种变长的Unicode转换格式,它将UNICODE码点转换为可变长度的字节序列。UTF-8的优势在于其对...
本文将深入探讨“编码查询”这一主题,包括Unicode、UTF-8和GB2312编码之间的转换,并讨论如何将这些编码转换为可读的文字。 首先,我们要理解编码的基本概念。编码是将字符(如字母、数字、符号)转化为二进制表示...
### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...
总的来说,GBK-BIG-UTF编码转换软件在处理跨平台、跨语言的文本数据时,起到了桥梁的作用,帮助用户克服因编码差异带来的困扰,实现了不同编码格式间的顺畅交流。了解和掌握各种字符编码的知识,对于从事IT工作尤其...
它使用1到4个字节编码一个Unicode字符,兼容ASCII,且对于英文等拉丁字母表文字占用较少的空间。对于中文汉字,UTF-8通常使用3个字节进行编码。 #### 五、编码对照实例分析 下面通过具体的实例来展示gb2312、...
内容为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_...