`
chenshuyi
  • 浏览: 29360 次
文章分类
社区版块
存档分类
最新评论

字符常见的几种编码方式

 
阅读更多

无论在是在编辑文本文件的时候,还是在制作网页的时候,总会遇到文本编码方式的问题。如果处理不当,就会出现乱码的问题。因此,有必要对文本的编码方式做一个详尽的了解。

常见的一些字符编码方式无非有:Unicode、ASCII、GBK、GB2312、UTF-8。下面先对常见的这一些字符编码方式作下说明:

1.ASCII码

这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制定的编码规范,它能表示128个字符,其中包括英文字符、阿拉伯数字、西文字符以及32个控制字符。它用一个字节来表示具体的字符,但它只用后7位来表示字符(2^7=128),最前面的一位统一规定为0。

2.扩展的ASCII码

原本的ASCII码对于英文语言的国家是够用了,但是欧洲国家的一些语言会有拼音,这时7个字节就不够用了。因此一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使 用的编码体系,可以表示最多256个符号。但这时问题也出现了:不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码 中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。这个问题就直接促使了Unicode编码的产生。

3.Unicode符号集

正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。而Unicode就是这样一种编码:它包含了世界上所有的符号,并且每一个符号都是独一无二的。比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。很多人都说Unicode编码,但其实Unicode是一个符号集(世界上所有符号的符号集),而不是一种新的编码方式。

但是正因为Unicode包含了所有的字符,而有些国家的字符用一个字节便可以表示,而有些国家的字符要用多个字节才能表示出来。即产生了两个问题:第一,如果有两个字节的数据,那计算机怎么知道这两个字节是表示一个汉字呢?还是表示两个英文字母呢?第二,因为不同字符需要的存储长度不一样,那么如果Unicode规定用2个字节存储字符,那么英文字符存储时前面1个字节都是0,这就大大浪费了存储空间。

上面两个问题造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。2)unicode在很长一段时间内无法推广,直到互联网的出现。

4.UTF-8

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8的编码规则很简单,只有两条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

5.GBK/GB2312/GB18030

GBK和GB2312都是针对简体字的编码,只是GB2312只支持六千多个汉字的编码,而GBK支持1万多个汉字编码。而GB18030是用于繁体字的编码。汉字存储时都使用两个字节来储存。


总的来说:

ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符

GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

Unicode编码:包含世界上所有的字符,是一个字符集。

UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。


*如果你想了解更多关于编码的信息,推荐阅读:字符编码方式(空闲时请再继续研读一下这篇文章)

*相关阅读:判定文件编码或文本流编码的方式(Java实现)


分享到:
评论

相关推荐

    字符集——几种编码.doc

    在本文中,我们将讨论几种常见的字符集和编码方式。 ASCII 码是最早的字符集标准,使用 7 位二进制数来表示字符,共 128 个字符,包括 32 个控制字符和 96 个可打印字符。ASCII 码的出现标志着计算机字符集的诞生,...

    常用的几种编码格式

    根据提供的文件信息,可以看出这些内容涉及到了不同的编辑器、数据查询工具及操作,但与“常用的几种编码格式”这一主题关系不大。为了更好地满足需求,本文将围绕“常用的几种编码格式”这一主题展开讨论。 ### ...

    关于 字符编码的 转换 知识

    本文将详细探讨字符编码的基础知识,并着重介绍几种常见的字符编码及其转换方法,特别是针对中文字符的处理。 #### 二、ASCII与扩展ASCII ASCII(American Standard Code for Information Interchange)即美国信息...

    几种常见字符集以及字符串的转化方法.rar

    下面我们将深入探讨几种常见的字符集以及字符串的转化方法。 1. ASCII字符集:ASCII是最基础的字符集,包含128个字符,包括英文大小写字母、数字、标点符号和一些控制字符。在VC++中,char类型通常用于存储ASCII...

    字符集和字符编码相关知识文档

    本文档主要介绍了几种常见的字符集和字符编码,包括ASCII、DBCS、GB2312、GBK、GB18030、BIG5以及UCS和Unicode。 1. ASCII字符集和编码: ASCII(美国信息交换标准代码)是最基础的字符编码,它包含了7位的字符编码...

    判断字符编码格式代码

    不同编码方式下,同一字符可能被表示为不同的数字序列。因此,在处理来自不同源的数据时,能够正确识别其使用的字符编码至关重要。 ### 二、字符编码简介 #### 1. ASCII(American Standard Code for Information ...

    常用编码详解 常用编码详解 常用编码详解 常用编码详解

    本文将深入解析几种常见的编码标准,包括UCS、BMP、Unicode以及UTF-8。 首先,UCS(Universal Character Set)是一种多字节字符集,由ISO/IEC 10646-1标准定义,目的是涵盖全球各种语言的书写字符。UCS有UCS-4和UCS...

    常用字符集编码详解

    本文将深入解析几种常用的字符集编码,包括ASCII、GB2312、GBK、GB18030、Big5以及Unicode及其变种UTF-8、UTF-16、UTF-32,帮助读者理解它们的特点、应用范围及相互之间的转换。 #### ASCII编码 ASCII(American ...

    字符集编码查询/反查工具

    而GB2312和GBK是中国大陆常用的简体中文字符集,UTF-8则是一种能够表示世界上大部分语言字符的编码方式,它采用了变长编码,能兼容ASCII并支持多语言。 二进制和十六进制是计算机内部处理数据的基础。所有数据在...

    java字符集编码问题

    本文旨在深入探讨与Java相关的字符集编码知识,包括但不限于编码的基本概念、几种常见的字符集编码类型及其特点,以及Java如何处理这些字符集编码问题。 #### 二、编码基本知识 1. **ISO 8859-1** ISO 8859-1是...

    字符编码查询之星

    Unicode是一个全球通用的字符集标准,包含了世界上几乎所有的文字系统,使用统一的编码方式,避免了不同语言间的编码冲突。UTF-8是Unicode的一种实现方式,它是一种变长编码,可以高效地处理各种语言的文本。GBK是...

    字符编码转换,支持任意编码

    字符编码是计算机处理文本的基础,不同的编码方式使得各种语言的文字得以正确显示。在这个主题中,我们将深入探讨“字符编码转换”这一重要概念,以及如何支持包括GBK、UNICODE(UTF-16)、UTF-8以及GB18030等在内的...

    字符编码查看器.rar

    字符编码主要有以下几种常见类型: 1. ASCII编码:美国标准信息交换代码,是最早使用的字符编码,包含128个字符,包括英文、数字和一些基本的标点符号。 2. ISO 8859系列:扩展了ASCII,提供了更多的国际字符支持...

    js对中文字符串进行gb2312编码解码

    GB2312编码是一种在中国大陆广泛使用的简体中文字符集,它包含了6763个常用汉字和一些其他字符。在JavaScript中进行GB2312编码和解码可以帮助我们正确地在不同环境间传输和展示中文字符。 首先,让我们理解GB2312...

    常用编码方式中英文对照表

    常用的编码方式有多种,每种编码方式都有其特点和应用场景。下面是常用编码方式的中英文对照表: 一、ASCII 编码 * 中文名称:ASCII 编码 * 英文名称:ASCII Code * 编码范围:0x00-0x7F * 特点:使用 7 位二进制...

    字符编码之间的转换规则与实现

    首先,我们要了解几种常见的字符编码体系:Ansi(通常指Windows默认的ANSI编码,即ASCII扩展)、Unicode和UTF-8。ASCII是最基础的7位字符编码,可以表示128个基本的西文字符;而Unicode则是一个更大的字符集,它包含...

    字符编码、内码_顺带介绍汉字编码

    本文将详细介绍字符编码的基本概念、发展历程以及常用的几种编码方式,特别关注汉字编码的技术实现和发展历程。 #### 二、字符编码的基本概念 在计算机内部,所有的数据都是以二进制形式存储和处理的。因此,为了让...

    _实现GB2312和UTF8字符编码方式的转换

    本文将深入探讨GB2312和UTF8两种常见字符编码方式的转换原理及其实现方法,特别关注在C#编程语言中的具体实践。 ### GB2312与UTF8概述 GB2312是中国大陆地区最常用的汉字编码标准之一,它支持约7000个常用汉字以及...

    JAVA及相关字符集编码问题

    UTF-8的优势在于其可变长度的编码方式,既能高效地表示英文等ASCII字符,又能很好地支持其他语言的字符。 在Java中,处理字符集编码的关键方法有: 1. `getBytes(String charset)` 该方法用于将字符串转换为指定...

    字符编码指导

    然而,固定长度的编码方式存在浪费和识别困难的问题。为了解决这些问题,UTF-8应运而生。 5. UTF-8:UTF(Unicode Transformation Format)是Unicode的一种变长编码实现,最常用的是UTF-8。UTF-8的特点是根据字符的...

Global site tag (gtag.js) - Google Analytics