字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16,GBK,GB2312
Unicode:
unicode.org制定的编码机制, 要将全世界常用文字都函括进去.
在1.0中是16位编码, 由U+0000到U+FFFF. 每个2byte码对应一个字符; 在2.0开始抛弃了16位限制, 原来的16位作为基本位平面, 另外增加了16个位平面, 相当于20位编码, 编码范围0到0x10FFFF.
UCS:
ISO制定的ISO10646标准所定义的 Universal Character Set, 采用4byte编码.
Unicode与UCS的关系:
ISO与unicode.org是两个不同的组织, 因此最初制定了不同的标准; 但自从unicode2.0开始, unicode采用了与ISO 10646-1相同的字库和字码, ISO也承诺ISO10646将不会给超出0x10FFFF的UCS-4编码赋值, 使得两者保持一致.
UCS的编码方式:
UCS-2, 与unicode的2byte编码基本一样.
UCS-4, 4byte编码, 目前是在UCS-2前加上2个全零的byte.
UTF: Unicode/UCS Transformation Format
UTF-8, 8bit编码, ASCII不作变换, 其他字符做变长编码, 每个字符1-3 byte. 通常作为外码. 有以下优点:
* 与CPU字节顺序无关, 可以在不同平台之间交流
* 容错能力高, 任何一个字节损坏后, 最多只会导致一个编码码位损失, 不会链锁错误(如GB码错一个字节就会整行乱码)
UTF-16, 16bit编码, 是变长码, 大致相当于20位编码, 值在0到0x10FFFF之间, 基本上就是unicode编码的实现. 它是变长码, 与CPU字序有关, 但因为最省空间, 常作为网络传输的外码.
UTF-16是unicode的preferred encoding.
UTF-32, 仅使用了unicode范围(0到0x10FFFF)的32位编码, 相当于UCS-4的子集.
UTF与unicode的关系:
Unicode是一个字符集, 可以看作为内码.
而UTF是一种编码方式, 它的出现是因为unicode不适宜在某些场合直接传输和处理. UTF-16直接就是unicode编码, 没有变换, 但它包含了0x00在编码内, 头256字节码的第一个byte都是0x00, 在操作系统(C语言)中有特殊意义, 会引起问题. 采用UTF-8编码对unicode的直接编码作些变换可以避免这问题, 并带来一些优点.
中国国标编码:
GB 13000: 完全等同于ISO 10646-1/Unicode 2.1, 今后也将随ISO 10646/Unicode的标准更改而同步更改.
GBK: 对GB2312的扩充, 以容纳GB2312字符集范围以外的Unicode 2.1的统一汉字部分, 并且增加了部分unicode中没有的字符.
GB 18030-2000: 基于GB 13000, 作为Unicode 3.0的GBK扩展版本, 覆盖了所有unicode编码, 地位等同于UTF-8, UTF-16, 是一种unicode编码形式. 变长编码, 用单字节/双字节/4字节对字符编码. GB18030向下兼容GB2312/GBK.
GB 18030是中国所有非手持/嵌入式计算机系统的强制实施标准.
分享到:
相关推荐
总之,C语言虽然没有内置的字符编码转换机制,但通过理解不同编码的原理和使用适当的库或API,可以实现UNICODE、GBK和UTF-8之间的转换。在进行这样的编程时,确保充分理解字符编码的细节,以及处理异常情况的方法,...
本文主要围绕四个重要的字符编码体系展开:ASCII、Unicode(UCS)、UTF-8以及GB2312,这些都是在软件网络技术中广泛使用的编码格式。 1. ASCII(American Standard Code for Information Interchange):ASCII是最...
### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...
字符编码是计算机处理文本的基础,涉及多种编码标准,如GBK、UTF8以及UCS。GBK是中国大陆广泛使用的编码,它是GB2312的扩展,兼容ASCII,支持超过两万个汉字,适合处理简体中文。而UTF8是Unicode的一种实现方式,...
GB18030是基于GB13000(与ISO 10646/Unicode同步更新)的标准,覆盖了Unicode的全部字符,使用变长编码,支持单字节、双字节和四字节编码,向下兼容GB2312和GBK。GB18030在中国大陆是强制性的标准,特别是在非手持或...
本压缩包包含四个关键函数,旨在实现GBK与Unicode之间的转换,以及UTF-8与Unicode的转换,这对于处理多语言或多编码格式的数据尤为有用。 首先,GBK(Great Chinese Binary Code)是一种在中国大陆广泛使用的汉字...
UTF-8、UNICODE(也称为UCS-2或UTF-16)和GBK是三种常见的字符编码标准,它们在处理多语言文本时各有特点。本文将深入探讨这些编码方式,以及如何在C语言中进行相互转换。 首先,UTF-8是一种变长编码,它使用1到4个...
GBK编码是在GB2312的基础上扩展的,因此,所有GB2312范围内的字符在GBK中都有对应的编码位置。对于UCS-2,我们需要一个转换表,将每个UCS-2编码映射到GBK编码,反之亦然。 自定义的转换代码通常会包括以下几个步骤...
在实际应用中,由于历史原因,某些系统或软件可能只支持GB18030编码,因此需要将Unicode(通常以UTF-8形式存在)转换为GB18030。这个转换过程通常包括两个步骤:UTF-8到Unicode,然后Unicode到GB18030。 **1. UTF-8...
《编码规则与用法详解:Unicode、UCS、UTF-8、Base64、ANSI》 在信息技术领域,字符编码是至关重要的,它决定了我们如何在计算机中存储、传输和显示文本。本文将详细介绍几种常见的编码方式,包括Unicode、UCS、UTF...
对于UTF-8到GBK/GB2312的转换,首先需要解析UTF-8编码,然后将对应的Unicode码点转换为GBK/GB2312编码。这个过程可能涉及到多字节序列的解码和单字节或双字节序列的编码。 “UCSconvert.cpp”和“ucsconvert.h”...
在字符工具V1.6中,主要涉及三种编码方式:UTF-8、unicode(UCS-2/UTF-16)和GBK。 1. **UTF-8**:是一种变长的Unicode编码,广泛用于网络传输。UTF-8用1到4个字节表示一个字符,对于ASCII字符(如英文字符)仅需1...
GBK是中国大陆广泛使用的字符编码标准,它兼容GB2312,包含了大量的汉字,而UTF-8是一种多字节的Unicode编码方式,支持世界上几乎所有的字符,包括汉字。 GBK全称为“Great Chinese Binary Code”,它基于GB2312,...
例如,将GB2312编码的数据转换为Unicode或UTF-8格式,或者将UTF-16的数据转换为UTF-8格式等。 #### 七、字节顺序标记(Byte Order Mark, BOM) 在处理Unicode编码时,还涉及到了字节序的问题。字节序是指在内存中...
它能够帮助用户将大量文件在UTF-8、Unicode(通常指的是UCS-2或UTF-16)和GBK(GB2312的扩展)编码之间进行快速、便捷地转换。 UTF-8是一种广泛使用的多字节字符编码,它可以表示Unicode字符集中的所有字符。由于其...
GBK 是微软基于 GB2312 未使用的编码空间,收录 GB13000 全部字符,制定了 GBK 编码,但编码方式与 GB13000 完全不同。 GB18030 是中国现时最新的内码字集,与 GB2312 完全兼容,与 GBK 基本兼容,支持 GB13000 及 ...
本文档主要介绍了几种常见的字符集和字符编码,包括ASCII、DBCS、GB2312、GBK、GB18030、BIG5以及UCS和Unicode。 1. ASCII字符集和编码: ASCII(美国信息交换标准代码)是最基础的字符编码,它包含了7位的字符编码...