`
eater2046
  • 浏览: 6984 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

字符编码和字符集的区别(utf-8 utf-16,ascII,gb2312,gbk)

阅读更多
今天去中信安笔试了,第一道题,我就很郁闷,是关于ASCII,unicode和UTF-8,UTF-16,gbk,gb2312的区别与不同。
这么多编码,都只是用过,听说过,但具体的区别自己真的一点都不懂,所以笔试被鄙视了,回来宿舍就仔细看了看,现在打出来,一来加深自己的理解,二来奉献给大家!
1.ASCII(American Standard Code for Information Interchange)码,是一种字符集。美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(International Organization for Standardization, ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母。ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:
     0~31及127(共33个)是控制字符或通讯专用字符(其余为可显示字符),如控制符:LF(换行)、CR(
回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126(共95个)是字符(32sp是空格),其中48~57为0到9十个阿拉伯数字;
  65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
2.UNICODE(Universal Multiple-Octet Coded Character Set)字符集
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
    unicode有两种方式:UCS-2,UCS-4,顾名思义,是两个字节和4个字节。
  具体的可以google和百度。总的来讲,计算机前期,一般是ASCII,现在基于全球一体化,基本都用unicode。
-----------------------------
字符编码
1.Gbk,GB2312,GB18030
字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
GB 18030是中国所有非手持/嵌入式计算机系统的强制实施标准.
2.UTF-8,UTF-16,UTF-32
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-8 Unicode GBK GB2312 编码之间的区别和联系

    ### UTF-8、Unicode、GBK、GB2312 编码之间的区别和联系 #### 一、引言 在互联网技术中,字符编码是非常重要的基础概念之一。字符编码不仅决定了文本在网络上的传输效率,还直接影响到了不同国家和地区用户访问...

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_

    UTF-8的优势在于对ASCII字符集的兼容性,前128个Unicode字符(包括英文、数字和常见符号)只需要一个字节表示,这使得UTF-8在互联网上广泛使用,因为其与ASCII的兼容性可以减少传输数据量。此外,UTF-8也支持全球大...

    编码转换器 绿色版 gb2312 gbk utf-8

    常见的字符编码有ASCII、GB2312、GBK、Big5和UTF-8等。 - **GB2312**:全称为“汉字机内码”,是中国大陆最早的一种简体中文字符集,主要包含常用汉字和部分符号,总共6763个字符。 - **GBK**:是GB2312的扩展...

    gb2312,utf-8,utf-8-bom等编码格式的互相转换

    本文将深入探讨几种常见的编码格式,如GB2312、UTF-8以及UTF-8-BOM,并详细讲解如何在C#中进行这些编码格式之间的转换,同时会涉及到与Stream相关的操作。 GB2312,全称为“国标汉字编码字符集”,是中国大陆广泛...

    c语言gbk、utf8转换编码表及函数

    在C语言中,字符编码是非常重要的概念,尤其是在处理多国语言和字符集的时候。GBK和UTF-8是两种常见的字符编码格式,它们各有特点并应用于不同的场景。本篇将详细介绍GBK与UTF-8编码的区别,以及如何在C语言中进行这...

    字符编码:GBK、GB2312、UTF-8

    UTF-8、UTF-16和UTF-32是Unicode的三种实现方式,它们决定了如何将Unicode编码的实际存储和传输。UTF-8是目前最流行的实现,因为它在大多数情况下都能有效地减少存储空间,并且与ASCII兼容,这意味着ASCII字符在UTF-...

    JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    Unicode最常用的变体是UTF-8、UTF-16等。在Java中,字符串默认使用Unicode编码,每个字符通常占用两个字节。 ##### 2. ISO-8859-1 ISO-8859-1是一种单字节编码方案,主要用于西欧语言。每个字符由一个字节表示,...

    pb12 gb转utf-8

    GB(通常指的是GBK或GB2312)是中国大陆广泛使用的简体中文字符集,它包含了大部分常用汉字。然而,GBK是双字节编码,对于中文字符的表示已经足够,但无法处理其他语言,如繁体中文、日文、韩文等。 UTF-8是一种多...

    UTF-16汉字编码表

    UTF-16(Unicode Transformation Format-16bit)是一种用于表示Unicode字符集的编码方式。它通过16位或32位来存储每一个字符,主要用于解决ASCII、GBK等传统编码无法覆盖全球所有语言文字的问题。与UTF-8相比,UTF-...

    汉字编码转换工具(汉字与utf-8转换 gb2312转换 unicode 转转

    本工具涵盖了三种主要的汉字编码格式:UTF-8、GBK(GB2312)以及Unicode,它们各自有其特点和使用场景。 首先,UTF-8是一种变长的Unicode编码,广泛应用于互联网和现代操作系统。它使用1到4个字节来表示一个字符,...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    ### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...

    GBK GB2312 UTF-8 ISO-8859-1区别

    字符编码标准之GBK、GB2312、UTF-8和ISO-8859-1的比较 字符编码标准是计算机领域中的一项基本技术,用于将文字或符号转换为计算机能够识别的二进制代码。常见的字符编码标准有GBK、GB2312、UTF-8和ISO-8859-1等,...

    utf-8.rar_c++ string utf-8_string to utf-8_utf_utf 8_utf-8

    如果需要处理UTF-8编码,可能需要额外的库支持,如Boost.Locale或者ICU库,这些库提供了对多字节字符集(包括UTF-8)的支持。 转换`std::string`到UTF-8通常不是必要的,因为`std::string`默认就可以存储UTF-8编码...

    GBK 与 UTF-8 间编码转换

    GBK(Great Chinese)编码是中国大陆广泛使用的多字节字符集,它是GB2312编码的扩展,兼容GB2312的同时,增加了更多的汉字和符号,总共包含了约20902个汉字。GBK采用双字节表示字符,对于中文字符覆盖较为全面,尤其...

    GBK与UTF-8转码(C++)

    2. **参数设置**:在调用`MultiByteToWideChar`和`WideCharToMultiByte`时,注意正确设置参数,特别是`CP_ACP`和`CP_UTF8`分别代表了当前系统的默认字符集和UTF-8编码。 3. **异常处理**:实际应用中应加入异常处理...

    GBK编码转换和UTF-8编码转换模块源码

    UTF-8的一个重要特性是对ASCII字符集的兼容性,ASCII字符在UTF-8编码下只占用一个字节,这使得UTF-8在互联网上被广泛应用,因为它可以无缝地与大部分基于ASCII的系统交互。 在资源中提到的“GBK编码转换为URL编码”...

    UTF-8和GBK及GB2312的区别

    为了满足这种需求,多种字符编码标准应运而生,其中UTF-8、GBK和GB2312是中文环境中最常用的几种编码方式之一。本文将详细介绍这三种编码方式的特点及其区别。 #### 二、GB2312编码 GB2312是中国大陆最早颁布的一...

    utf-8、gbk、gb2312区别

    常见的字符集包括UTF-8、GBK、GB2312等,它们各有特点,在不同的场景下被广泛应用。 #### GB2312编码 **GB2312**是中国大陆最早制定的汉字信息交换用编码字符集国家标准之一,发布于1980年。GB2312支持约7000个...

    gb2312转utf-8

    然而,随着信息技术的发展,GB2312的字符覆盖范围已经无法满足需求,于是出现了更全面的GBK和UTF-8编码。 GBK是在GB2312基础上扩展的,增加了更多的汉字和符号,但仍然是双字节编码。而UTF-8(Unicode ...

Global site tag (gtag.js) - Google Analytics