`

字符集系列之-----字符集、编码概念

阅读更多

要谈编码就要先谈两个十分容易混淆的概念,一个是编码字符集 (Coded Character Set),一个是字符编码方案 (Character Encoding Scheme)

 

编码字符集就是将字符集中每个字符赋一个数字代码 ,这是为了便于计算机处理。编码字符集一般由标准组织制定,Unicode就是典型的编码字符集。一个编码字符集必定对应一个字符集,Unicode编码字符集对应Unicode字符集,那么什么是字符集呢?


字符集是一个字符的集合,它规定这个集合包含哪些字符Unicode字符集包含所有Unicode字符,这几乎囊括了世界上所有语言的文字。一个更小的字符集是ASCII字符集,它只有128个字符,包含52个字母、10个数字、一些标点符号和一些控制字符。一个字符集想要被计算机表示,首先要将它映射成数字代码,因为计算机本质上只能表示数字,这是由编码字符集定义的。如何存储这些数字代码就涉及到字符编码方案了。

 

字符编码方案定义如何将数字代码映射成字节序列 。有人可能就要问了,有必要这么麻烦吗,代码1不就映射成字节1,代码2不就映射成字节2,依次类推。的确如果,字符集的不超过256个字符,这是一种非常合理简单的编码方案,每个字符只用一个字节来表示就可以了。但是如果字符集大小超过256个且不超过65536个,每个字符就需要2字节来编码,如果字符集包含更多的字符就需要使用更多的字节来编码一个字符,这种编码方案称为定长编码 ,例如GB2312就是采用这样的编码方案。这种编码方案很简单但是却存在问题,它对常用的和生癖的字符都使用同样的长度来编码,这很浪费存储空间,一种更好的编码方案是使用变长编码 ,它对常用的字符使用一个字节来编码,对不常用的字符使用两个字节来编码,而对非常生癖的字符使用三个或更多的字节来编码。Unicode编码字符集的一种变长编码方案是就是UTF-8,它的定长编码方案称为UTF-16。需要注意的是,既然涉及到多个字节就需要注意字节序了,因此UTF-16又分为Big Endian UTF-16Little Endian UTF-16UTF-8只能有一种字节序,这是因为字符编码之后的字节之间存在依赖关系。

 

最后什么是编码呢?编码是编码字符集和字符编码方案的一个组合 ,它可以将字符集中的字符映射成字节序列。编码隐含着编码字符集和字符编码方案,从而也隐含着字符集。例如UTF-8是一种编码,它是Unicode编码字符集和UTF8编码方案的一个组合。GB2312也是一种编码,它的编码字符集就是编码的简体中文字符集,编码方案采用定长编码。实践中经常混用编码字符集和编码这两个概念,这是因为大多数编码字符集都只有一种编码方案,这样的编码字符集(或者说编码)包括GB2312, GBK, ASCII, ISO8859-1等。但是当编码字符集存在多种编码方案时,就有必要区分编码字符集和编码了,例如我们说Unicode时一般是指编码字符集,说UTF-8UTF-16时才是指编码。

 

分享到:
评论

相关推荐

    《一个故事带你搞懂ASCII-Unicode字符集和UTF-8编码》

    本文以故事的形式介绍了字符集和编码的发展历程,从ASCII到Unicode和UTF-8编码。 ASCII,全称为American Standard Code for Information Interchange(美国信息交换标准代码),最初是基于8位字节的编码系统,可以...

    常用字符集及字符编码简介

    字符集与字符编码是计算机处理文字的基础,它们决定了如何用二进制表示各种语言的字符。在信息技术领域,理解和掌握字符集与字符编码至关...通过阅读这些文件,你可以进一步深入理解字符集和字符编码的概念及其应用。

    oracle字符集的查看和client字符集的修改

    这里的`AMERICAN_AMERICA`表示语言和地区,而`UTF8`则表示字符集编码。 #### 四、理解NLS_LANG参数 - **NLS_LANG**:该环境变量用于定义客户端的区域设置,包括语言、地区和字符集。 - **LANGUAGE**:指定客户端...

    java字符集编码问题

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

    字符集与字符集编码简介

    字符集与字符集编码简介 我们知道,计算机只能识别诸如0101这样的二进制数,于是人们必须以二进制数据与计算机进行交互,或者先将人类使用的字符按一定规则转换为二进制数。 那什么是字符呢?在计算机领域,我们把...

    字符集和字符编码详解

    字符集和字符编码是计算机处理文字的基础,它们决定了如何在二进制的世界中表示和传输人类语言。本文将深入探讨这两个概念,以及相关的知识点。 首先,我们要理解什么是字符集。字符集,顾名思义,就是一个集合,...

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

    字符集编码是计算机科学中的一个重要概念,涉及到数据的存储、传输和显示。在这个"字符集编码查询/反查工具"中,我们可以看到涉及到的关键技术包括字符集、二进制、十六进制、Base64以及URL编码。这些知识点在信息...

    字符集编码开发总结-BMP查看器

    本篇文章将深入探讨字符集编码的概念,特别是针对“BMP查看器”这一工具的开发总结。BMP(Bitmap)是一种常见的位图图像格式,通常用于存储无压缩的图像数据。开发一个能够正确解析并显示BMP图像的查看器,对于理解...

    qt实现转换文件字符集编码

    在IT领域,字符集编码是处理文本数据时一个至关重要的概念。不同的编码方式决定了如何将字符映射到二进制表示,以及如何从二进制还原出字符。Qt是一个跨平台的应用程序开发框架,它提供了丰富的API来处理各种编码...

    JAVA及相关字符集编码问题

    在深入探讨JAVA与字符集编码问题之前,我们首先需要理解不同字符集编码的基本概念以及它们在JAVA环境中的应用。字符集编码是计算机系统中表示文字的一种方式,它决定了如何将字符转换为二进制数据,以便于存储和传输...

    oracle 中文字符集问题

    本文将深入探讨Oracle中的中文字符集问题,包括其基本概念、常见字符集类型以及如何在不同场景下正确配置和使用字符集。 #### 一、Oracle字符集概述 在Oracle环境中,字符集用于定义如何表示和存储字符数据。一个...

    Java字符集和编码

    ### Java字符集和编码 ...总之,Java中的字符集和编码是解决国际化应用中乱码问题的关键技术之一。通过对这些概念的理解和掌握,可以帮助开发者更好地处理文本数据,提高应用程序的兼容性和稳定性。

    mysql字符集设置

    - **字符集(Character Set)**:是一系列字符的集合,例如ASCII、GBK、UTF-8等,定义了字符的编码方式。 - **排序规则(Collation)**:是在字符集基础上定义的字符比较和排序规则,决定了字符的顺序。 2. **...

    Java中的字符集编码入门(二)编码字符集与字符集编码的区别[参考].pdf

    总的来说,字符集编码和字符集编码是文本处理中的核心概念,理解它们的区别有助于我们在编程中有效地处理字符和文本数据。无论是开发Web应用、桌面软件还是移动应用,都需要对字符编码有深入的理解,以便在处理各种...

    Oracle 字符集详解

    Oracle字符集是数据库管理系统Oracle中的一个重要概念,它决定了数据库如何存储和处理文本数据。字符集不仅影响着数据的准确性和一致性,还与全球化应用、数据迁移和数据交换密切相关。本篇将深入探讨Oracle字符集的...

    Java字符集编码简记

    在IT行业中,字符集编码是基础且至关重要的概念,尤其对于Java开发者来说,理解编码机制是处理各种文本数据的关键。本文将围绕“Java字符集编码简记”这一主题,深入探讨相关知识点,并结合标签“源码”和“工具”,...

    字符集编码的识别(zz)

    标题中的“字符集编码的识别”是一个关于计算机科学和编程的重要主题,主要涉及文本数据在计算机内部的表示方式。字符集编码是将字符与二进制数字之间建立映射关系的一种方法,使得计算机能够理解和处理各种语言的...

    Linux字符集编码转换.docx

    Linux 字符集编码转换是一个非常重要的概念,在 Linux 操作系统中,字符集编码转换是必备的知识。本文将从基础概念开始,逐步引导读者了解字符集编码转换的相关知识。 首先,让我们了解什么是 ASCII 编码。ASCII ...

Global site tag (gtag.js) - Google Analytics