`
fengfantasy
  • 浏览: 1006 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

几种常见的编码格式

 
阅读更多
几种常见的编码格式
为什么要编码
不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的语言假定为英语,其它语言要能够在计算机中使用必须经过一次翻译,把它翻译成英语。这个翻译的过程就是编码。所以可以想象只要不是说英语的国家要能够使用计算机就必须要经过编码。这看起来有些霸道,但是这就是现状,这也和我们国家现在在大力推广汉语一样,希望其它国家都会说汉语,以后其它的语言都翻译成汉语,我们可以把计算机中存储信息的最小单位改成汉字,这样我们就不存在编码问题了。
所以总的来说,编码的原因可以总结为:
计算机中存储信息的最小单元是一个字节即 8 个 bit,所以能表示的字符范围是 0~255 个
人类要表示的符号太多,无法用一个字节来完全表示
要解决这个矛盾必须需要一个新的数据结构 char,从 char 到 byte 必须编码
如何“翻译”
明白了各种语言需要交流,经过翻译是必要的,那又如何来翻译呢?计算中提拱了多种翻译方式,常见的有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。它们都可以被看作为字典,它们规定了转化的规则,按照这个规则就可以让计算机正确的表示我们的字符。目前的编码格式很多,例如 GB2312、GBK、UTF-8、UTF-16 这几种格式都可以表示一个汉字,那我们到底选择哪种编码格式来存储汉字呢?这就要考虑到其它因素了,是存储空间重要还是编码的效率重要。根据这些因素来正确选择编码格式,下面简要介绍一下这几种编码格式。
ASCII 码
学过计算机的人都知道 ASCII 码,总共有 128 个,用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。
ISO-8859-1
128 个字符显然是不够用的,于是 ISO 组织在 ASCII 码基础上又制定了一些列标准用来扩展 ASCII 编码,它们是 ISO-8859-1~ISO-8859-15,其中 ISO-8859-1 涵盖了大多数西欧语言字符,所有应用的最广泛。ISO-8859-1 仍然是单字节编码,它总共能表示 256 个字符。
GB2312
它的全称是《信息交换用汉字编码字符集 基本集》,它是双字节编码,总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。
GBK
全称叫《汉字内码扩展规范》,是国家技术监督局为 windows95 所制定的新的汉字内码规范,它的出现是为了扩展 GB2312,加入更多的汉字,它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字,它的编码是和 GB2312 兼容的,也就是说用 GB2312 编码的汉字可以用 GBK 来解码,并且不会有乱码。
GB18030
全称是《信息交换用汉字编码字符集》,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与 GB2312 编码兼容,这个虽然是国家标准,但是实际应用系统中使用的并不广泛。
UTF-16
说到 UTF 必须要提到 Unicode(Universal Code 统一码),ISO 试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字典是多么的复杂,关于 Unicode 的详细规范可以参考相应文档。Unicode 是 Java 和 XML 的基础,下面详细介绍 Unicode 在计算机中的存储形式。
UTF-16 具体定义了 Unicode 字符在计算机中存取方法。UTF-16 用两个字节来表示 Unicode 转化格式,这个是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是 16 个 bit,所以叫 UTF-16。UTF-16 表示字符非常方便,每两个字节表示一个字符,这个在字符串操作时就大大简化了操作,这也是 Java 以 UTF-16 作为内存的字符存储格式的一个很重要的原因。
UTF-8
UTF-16 统一采用两个字节表示一个字符,虽然在表示上非常简单方便,但是也有其缺点,有很大一部分字符用一个字节就可以表示的现在要两个字节表示,存储空间放大了一倍,在现在的网络带宽还非常有限的今天,这样会增大网络传输的流量,而且也没必要。而 UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以是由 1~6 个字节组成。
UTF-8 有以下编码规则:
如果一个字节,最高位(第 8 位)为 0,表示这是一个 ASCII 字符(00 - 7F)。可见,所有 ASCII 编码已经是 UTF-8 了。
如果一个字节,以 11 开头,连续的 1 的个数暗示这个字符的字节数,例如:110xxxxx 代表它是双字节 UTF-8 字符的首字节。
如果一个字节,以 10 开始,表示它不是首字节,需要向前查找才能得到当前字符的首字节
分享到:
评论

相关推荐

    常用的几种编码格式

    接下来,我们将详细介绍几种常见的编码格式及其特点。 #### ASCII 编码 **ASCII**(American Standard Code for Information Interchange,美国信息交换标准代码)是一种基于拉丁字母的一套电脑编码系统,最初被设计...

    判断字符编码格式代码

    代码中主要考虑了以下几种情况: #### 1. BOM(Byte Order Mark)检测 BOM是一种特殊的字符序列,通常出现在文件的开头,用来标识文件的编码格式和字节顺序。代码首先检查是否存在BOM标记: - **UTF-8的BOM**:0...

    几种常见的编码方式_编码_python_

    这里我们将详细探讨几种常见的编码方式:标签编码、独热编码和二值化。 1. **标签编码**: 标签编码是一种将分类数据转换为连续整数的方法。它将每个类别赋予一个唯一的整数标签,例如,'A' -> 1, 'B' -> 2, 'C' -...

    C# 编码自动识别 匹配文件当前编码格式

    为了自动识别文件的编码格式,我们需要编写一个程序,它能够读取文件的前几个字节(通常为2或4个字节),然后根据这些字节的值来判断可能的编码。这个过程称为"字节顺序标记"(BOM)检测,或者对于无BOM的编码,通过...

    获取编码格式的工具类

    在IT行业中,编码格式是处理文本数据时至关重要的一个环节,因为不同的编码方式会影响字符的表示和解析。本文将详细探讨“获取编码格式的工具类”这一主题,它旨在帮助开发者处理不同编码格式的文本文件,如UTF-8和...

    批量编码格式转换器

    编码格式转换器主要应用于以下几种情况: 1. **多语言支持**:不同的编码格式支持的字符集不同,如ASCII主要支持英文,而UTF-8则能涵盖全球大部分语言的字符。当处理包含多种语言的文件时,转换编码格式可以确保所有...

    JAVA程序的编码格式详解

    由于Java是一种跨平台的语言,因此在不同的操作系统之间存在编码格式的差异,这导致了在处理文本数据时经常会遇到字符显示错误的问题。本文旨在深入探讨Java中的编码格式,帮助开发者更好地理解和解决在开发过程中...

    Linux查看文件编码格式及文件编码转换

    以下是几种常见的文件编码转换方法: #### 使用Vim转换文件编码 1. **直接在Vim中转换**:打开文件后,可以在Vim命令模式下直接设置文件的编码格式,例如将文件转换为UTF-8编码: ```vim :set fileencoding=utf-...

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

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

    乱码 编码方式解决 gbk ISO8859-1 utf8 编码

    本文将针对标题中的几种常见编码格式(GBK、ISO 8859-1、UTF-8)以及如何解决由这些编码方式引发的乱码问题进行深入探讨。 #### 一、编码概述 1. **GBK编码**:GBK是GB2312标准的扩展,支持简体中文,是Microsoft ...

    怎样获取txt文件的编码格式

    以下是几种常见的方法: 1. **查看文件头部字节**:许多编码格式,如UTF-8,会在文件开头包含特定的字节序列。例如,UTF-8的BOM(Byte Order Mark)标识符是`0xEFBBBF`,可以通过读取文件的前几个字节来判断。 2. ...

    Oracle查看编码格式

    接下来,我们将介绍几种常用的查看Oracle数据库编码格式的方法。 **1. 使用USERENV函数查看语言环境:** ```sql SELECT userenv('language') FROM dual; ``` **解释:** - `userenv('language')` 返回当前...

    DVD素材制作之视频篇视频质量的控制和几种常见编码器设置.doc

    DVD素材制作之视频篇视频质量的控制和几种常见编码器设置.doc

    批量将VC工程相关文件转换为UTF-8编码格式

    1. **兼容性**:UTF-8是互联网上最常用的编码格式,大多数现代文本编辑器、浏览器和其他软件都能正确识别和处理UTF-8编码的文件。 2. **可读性**:在ASCII范围内,UTF-8编码与ANSI编码完全一致,这意味着纯英文的...

    wav文件封装pcm编码格式

    PCM(Pulse Code Modulation),脉冲编码调制,是数字音频的基本编码方式,也是WAV文件最常用的编码格式之一。 PCM编码是一种模拟信号到数字信号的转换过程,它通过在固定的时间间隔内对模拟信号进行采样,然后将每...

    java识别文件编码格式

    一种常见的方法是逐行读取文件,尝试用多种常见编码进行解码,根据解码是否成功或解码后的字符集来判断文件的编码。 6. **错误计数法**:如果在读取文件时遇到乱码,可以通过记录错误字符的数量和类型来推测文件的...

    DVD素材制作之视频篇(1)视频质量的控制和几种常见编码器设置.doc

    DVD素材制作之视频篇(1)视频质量的控制和几种常见编码器设置.doc

    批量转换文本文件的编码格式

    文本文件的编码格式是计算机处理文字时的一种标准,不同的编码方式会影响文件中字符的存储和显示。常见的编码格式有ASCII、GB2312、GBK、UTF-8、Unicode等。在处理多语言或者跨平台的文本时,选择正确的编码至关重要...

    几种常用红外遥控器协议

    以下是几种常用的红外遥控器协议的详细说明: 一、NEC协议 NEC协议是一种广泛使用的红外遥控协议,具有8位地址和8位命令。为了提高传输的可靠性,每个地址和命令都会重复发送一次。它采用38KHz的载波频率,每位时间...

    12种格式测试视频,里面带有常见的格式

    这个压缩包包含了12种常见的视频格式,为开发者提供了一个丰富的测试资源库。这些测试视频有助于开发者确保他们的软件或应用能正确地编码、解码、播放以及处理各种格式的视频数据。以下是关于这12种格式的一些关键...

Global site tag (gtag.js) - Google Analytics