`
123003473
  • 浏览: 1047627 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于编码 之一 ANSI GBK UNICODE的由来

 
阅读更多
目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。ASCII码适用于所有拉丁文字,它用7位二进制数进行编码(其最高位(bit7)被用做奇偶校验位),可以表示128个字符。
第0~32号及第127号(共34个)是控制字符或通信专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等。
第33~126号(共94个)是字符,其中第48~57号为0~9 10个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
ASCII码占用一个字节,准确地说,是7个比特。由于汉字出现在ASCII码之后,所以汉字的编码必须兼容ASCII码。还有一个问题就是,汉字的数目很多,用简单的1个字节根本无法表达(1个字节,撑死了只能表示256个字符,除掉ASCII码,只有128个可用的了)。因此聪明的中国人决定采用2个字节来表达一个汉字。由于ASCII码占用7位的历史原因,所以这种聪明的编码方式规定:对于连续的2个字节,只有在2个字节的bit7都是1的情况下,才认为这2个字节合起来表示一个汉字。这样不同长度混排的编码方法,通常被叫做"MBCS(Muilti-Bytes Charecter Set,多字节字符集)",如"中文ABC"这串文本,它所占用的字节数可能就是:2×2+3=7,如图4-12所示。


这样的编码挺好,而且与ASCII码兼容。这种编码被称做GB2312(国标2312,GB就是国标的简写)。GB2312后来又扩展成了GBK(国标扩展码),甚至GB18030。此外,不同的国家和地区都制定了不同的编码标准,如:BIG5、JIS等编码。不同编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字存储在同一段编码的文本中,UNICODE由此浮出水面。
为了使国际间信息交流更加方便,国际标准化组织(ISO)制定了 UNICODE 字符集,为各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。
UNICODE开始制订时,计算机的存储器容量极大地发展了,也就是说空间再也不成为问题了。于是ISO直接规定必须用2个字节,也就是16位来统一表示所有的字符,对于ASCII里的那些"半角"字符,UNICODE保持其原编码不变,只是将其长度由原来的8位扩展为16位,如英文字母"A",其编码就会变成"00000000 01100001"。很显然,由于"半角"英文符号只需要用到低8位,所以其高8位永远是0。因此这种大气的方案在保存纯英文文本时会浪费一倍的空间。而其他文化和语言的字符则全部重新统一编码。如:"中"的UNICODE为"01001110 00101101"。
这样一来,没那么多的麻烦事了,所有的字符都固定占用2个字节。如"中文ABC",它所占用的字节数就是:5×2=10,如图4-13所示。所以,使用UNICODE编码进行存放的字符也被称做宽字节字符。

参考:http://baike.baidu.com/link?url=Db8dadNPrUCL9gtccoba7kmWhPgt04W56hByfkM3rXtdwqoA8UtQVHKlfQ_vgrfF
分享到:
评论

相关推荐

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    1. ANSI编码:通常指的是Windows系统的默认编码,如GBK或CP936,它是一种多字节编码,不支持所有Unicode字符。 2. Unicode:这是一个标准,定义了所有已知字符的唯一数字表示,分为Little Endian和Big Endian两种...

    C++ gbk转unicode、ansi转unicode,字符串查找、切割、转十六进制、转二进制、转义,随机数等数据处理类源码

    1数据转换:ANSI等编码、UTF8编码、UTF16编码(实际为Unicode编码)、TCHAR互转,可以先获取转换出的数据在存储时所需的大小 2字符串查找:正向查找、逆向查找、指定偏移查找 3字符串切割:正向分割、逆向分割、指定...

    ANSI2Unicode_1.0.3

    本文将深入探讨"ANSI2Unicode_1.0.3"这一源码,这是一个用于将ANSI编码转换为Unicode编码的工具,其主要功能是帮助用户处理不同编码格式间的兼容性问题。 首先,我们需要理解ANSI和Unicode的基本概念。ANSI编码,也...

    各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    ANSI 和Unicode相互转换的类

    ANSI和Unicode是两种常见的字符编码标准,它们在处理不同语言的文本时起着关键作用。本文将深入探讨ANSI和Unicode的区别,以及如何在C++中使用MFC库实现它们之间的转换。 首先,让我们了解ANSI和Unicode的基本概念...

    文本转码 ansi转unicode

    ANSI编码并非一个严格的规范,而是通常用来指代Windows系统中的默认多字节编码,如GBK或CP936等,这些编码依赖于地区设置,用于表示特定地区的字符集。在英语系统中,ANSI编码可能等同于ASCII编码,包含128个基本的...

    utf-8、ANSI、Unicode相互转化c++实现

    utf-8、ANSI、Unicode相互转化c++实现 std::string ConverANSI2UTF8(const std::string & str); std::wstring ConverANSI2Unicode(const std::string str); std::wstring ConverUTF82Unicode(const std::string str)...

    C语言UTF8到ANSI和Unicode转换代码

    1. **UTF8到ANSI**:这个过程通常需要知道目标ANSI编码页(例如GBK),因为不同的ANSI编码页对应不同的字符集。首先,你需要解析UTF8字符串,找出每个Unicode字符,然后查找对应的ANSI字符并将其写入新的字符串。 2...

    字符串十六进制转换工具(包含ANSI和UNICODE)

    相比之下,UNICODE是一种国际化的字符编码标准,它使用固定宽度的16位(2字节)来表示每个字符,理论上可以表示65536个不同的字符,覆盖了全球大部分语言的字符集。UNICODE有两种主要的存储方式:UTF-16LE(低位在前...

    UNICODE和GBK编码转换

    使用windows进行unicode编码和GBK编码之间的转换的示例程序

    c/c++ 字符集 gbk/utf8互转,Ansi/Utf8互转 纯c实现跨平台

    例如,一个使用GBK编码的文本文件在Windows上打开正常,但在Linux系统上可能因为默认使用UTF-8编码而显示乱码。为了解决这个问题,我们需要编写函数来完成编码之间的转换。 文件`strnormalize.c`和`public_...

    命令行中用VBS实现本文文件编码互换

    ANSI编码通常指的是基于Windows的本地化代码页,如GBK或GB2312,它为每个字符分配一个特定的字节序列。而Unicode是一种广泛采用的标准,它使用双字节(UCS-2)或四字节(UTF-32)来表示世界上几乎所有的字符,因此...

    汉字内码查询器,包括unicode和Ansi码

    标题中的“汉字内码查询器,包括unicode和Ansi码”意味着这个工具能够帮助用户查找汉字在Unicode和Ansi(通常指GBK)编码下的值。这对于开发者、程序员或者需要处理汉字编码问题的人来说非常有用。例如,当遇到乱码...

    批量Ansi文本与Unicode文本转换工具

    HTML->TXT转换、文件合并、TXT文件段落合并、TXT文件分行、编码(GB/GBK/Big5/Shift-JIS/Unicode)转换(只能用于Win 2k/XP)、文本替换、HTML代码整理、文件切分、文本提取、正则表达式、TCR批量压缩/解压.

    unicode/UCS/UTF-8/Base64/ANSI等编码介绍

    然而,ANSI编码并不是一个全球通用的标准,对于非拉丁字符集的语言,如中文、日文等,就需要使用其他编码方式,如GBK或Big5。 总结来说,Unicode和UCS为全球字符的统一编码提供了基础,UTF-8作为Unicode的一种实现...

    UNICODE,UTF8,ANSI 等编码规范详解

    本文将深入探讨几种常见的字符编码规范,包括ASCII、Unicode、UTF8、ANSI、GBK、GB18030等,以及它们之间的关系和转换规则。 1. ASCII编码:ASCII(American Standard Code for Information Interchange,美国信息...

    编码批量转换工具

    批量字符编码转换工具可以在gbk,gb23123,unicode,utf8,ansi之间进行汉字编码转换。 【软件特点】 1 支持格式众多的字符串编码转换器 支持几十种字符编码转换。比如utf8转gbk,gb2312转utf8,ansi转utf8,utf8 unicode...

    汉字、UNICODE、GBK变化相互转化VB6源程序源码

    1. **汉字到UNICODE**:汉字通常以GBK编码存储,要转换为UNICODE,你可以使用`StrConv`函数,设置其`FromCharCode`参数为65001(UTF-8),`ToCharCode`参数为0(默认为ANSI,即GBK)。 2. **UNICODE到汉字**:相反...

    Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    Qt字符转换,串口接收数据转为中文显示可用。Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    生成Unicode编码的文本文件示例

    与之相对的是ANSI编码,它通常指的是特定区域的ASCII扩展,如Windows的默认编码GBK或CP1252等。 当我们需要处理跨语言或多语言的文本时,Unicode编码,特别是UTF-16(Unicode Transformation Format - 16位)就显得...

Global site tag (gtag.js) - Google Analytics