`

字符集和编码方式

 
阅读更多

字符集:符号与控制符的集合以及与二进制的对应关系

编码方式:计算机读取与存储字符集中字符的规则

比如ASCii字符集有128个字符,其中‘A’对应的是十进制65,ASCii编码方式则是用首位为0的一个字节表示每个字符,计算机只要依次读取单字节并将后七位与字符集比较,就能读懂该字节含义

 

ASCii:包含128个字符

iso-8859-1:包含256个字符,向下兼容ASCii即它的1~128与ASCii一样

ANSI: 一种扩展的ASCII码,每个国家不一样,中文简体就是ASCII+GBK,繁体字的是Big5,日语的是Shift_JIS

 

Unicode

现在最重要的当属Unicode字符集(兼容ASCii),它将世界上几乎所有的字符都包含其中,比如汉字‘严’对应的Unicode码是十六进制4E25。现在缺的就是一个编码方式来实现这个字符集。

设计编码实现的时候遇到一个问题:作为一个规模极大的字符集很可能有些字符用一个字节甚至几位就能表示而有些需要好几个字节来表示。假设字符集最后一个字符必须用4个字节的长度表示,那我们是不是规定用4个字节来表示每个字符,前面空的都置0;

当然这是很不合适(也有这样做的后面介绍)的这样会造成存储空间的极大浪费,而且我们常用的字符都是放在前面的也就是用较少的字节就能表示,那存储空间不可避免会保存大量的废数据0

 

utf-8

现在最常用的unicode的编码实现方式是utf-8,最大的特点是,他是一种变长的编码方式。它使用1~4个字节表示一个符号。

utf-8的编码规则有两条:

1.单字节字符,第一位为0,后7位为这个符号的unicode码

2.对于n字节的符号(n>1),首字节前n位为1、n+1位为0,其他字节一律以10开头,剩下的所有字节表示这个符号的unicode码

 

Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

 

比如‘严’的Unicode码是4E25(100111000100101)在0800~FFFF的范围内,因此需要三个字节表示,这样‘严’的utf-8编码就是“11100100 10111000 10100101”,用十六进制表示就是E4B8A5

 

USC-2

unicode还有一种编码方式就是USC-2,即所有字符都用两个字节来表达,也就是notepad的中所谓的unicode,可以看到后面还有一种unicode big endian其实这是同一种编码方式两种不同的存储方式


 

 

little endian 和 big endian

这两个名字来自格列佛游记,书中,小人国爆发内战,战争的原因是国民对,吃鸡蛋从大头敲开还是从小头敲开产生分歧。

计算机中内存是有编号的,读取一个连续的内存是从编号小的开始读取。

比如:内存中编号为10、11的两个内存要存储ucs-2编码的Unicode码‘严’(4E25),

将高位4E存储在内存10中将25存储在内存11中这种高位先存的方式就是big-endian

反之则叫做little-endian

 

utf-8只有一种存储方式,因此计算机自然知道怎么读取存储,但是对于usc-2有两种存储方式,计算机就无从下手了。因此需要一个标示,big-endien 文件前两个字节是FE FF ,littile-endian则是 FF FE

 

 

  • 大小: 21.3 KB
分享到:
评论

相关推荐

    字符集——几种编码.doc

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

    Java字符集和编码

    ### Java字符集和编码 #### 一、引言 在探讨Java字符集和编码之前,我们先了解一下为什么在Java编程中需要关注字符集和编码。Java作为一种广泛应用的编程语言,其内部采用的是Unicode编码,这使得Java能够很好地...

    字符集和字符编码详解

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

    字符集和字符编码

    字符集和字符编码 字符集是指计算机系统支持的所有抽象字符的集合,包括文字、符号、图形符号、数字等。字符编码是将字符转换为二进制数据的过程,反之,解码是将存储在计算机中的二进制数据解析显示出来。 1. ...

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

    BIG5是台湾地区广泛使用的繁体中文字符集,采用了双字节编码方式,主要针对繁体汉字,同时也包含了一些其他符号和非汉字字符。 7. UCS(Universal Character Set)字符集: UCS是国际标准ISO 10646定义的字符集,它...

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

    UTF-8是Unicode字符集的一个变种,是一种变长的字符编码方式。它使用1至4个字节来表示Unicode中的每个字符,其中英文字符只需要1个字节,而大部分汉字则需要3个字节。UTF-8具有良好的向前兼容性,广泛应用于网络...

    字符编码和字符集研究

    字符编码和字符集是计算机处理文字和符号的基础。字符集是指一组特定的字符集合,它包含文字、符号、数字等元素。例如,英文字符集包含了所有的英文字母和符号,而汉字字符集则包含了所有汉字。字符集可以是某个语言...

    orcle字符集系统介绍及设置[定义].pdf

    在软件开发中,了解这些字符集和编码方式对于处理跨平台、多语言的应用程序是至关重要的。开发者需要确保数据库、应用程序和操作系统之间的字符集设置协调一致,以避免数据丢失或显示异常。在C#编程中,可以使用...

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

    在编程领域,字符集和字符串转换是至关重要...在实际开发中,我们需要根据需求选择合适的字符集和编码方式,以确保数据的准确性和程序的兼容性。同时,熟悉并运用各种转换函数,可以有效地处理多语言环境下的文本数据。

    unicode编码方式详解

    这种编码方式取决于字符集和编码方式。 1.1 文本和字符 在计算机程序或数据文件中,文本是作为数字序列存储的。这些数字序列是具有不同大小、取值和解释的整数。如何解释这些整数是由字符集和编码方式决定的。文本...

    Web开发字符集相关知识

    Web开发中的字符集和字符编码是确保正确显示和处理文本数据的关键因素,特别是在涉及多语言和特殊字符时。...在实际工作中,要时刻关注编码兼容性,尤其是在多语言环境下,选择合适的字符集和编码方式至关重要。

    字符集Unicode与UTF-8之间的转换

    Unicode和UTF-8是两种常用的字符集和编码方式,本文将详细介绍它们之间的转换。 Unicode Unicode是一个字符集,提供了一个通用的字符编码方案,能够表示世界上所有语言中的所有字符。Unicode使用双字节表示每个...

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

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

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

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

    各国字符集-http编码

    在互联网技术中,字符集(Character Set)是指一组符号及其对应的二进制编码方式,用于计算机系统内部表示、存储和传输文本信息。不同国家和地区使用的语言不同,因此需要支持多种字符集以确保全球范围内的信息正确...

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

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

    字符集编码

    因此,理解字符集编码的基本原理及如何在实际开发中正确配置和使用它们至关重要。 #### 二、编码基本知识 ##### 2.1 ISO 8859-1 - **定义**:ISO 8859-1 是一种单字节编码标准,主要用于西欧语言,如英语、法语等...

    Linux字符集编码转换.docx

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

Global site tag (gtag.js) - Google Analytics