`

编码基本知识

    博客分类:
  • java
阅读更多

最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。

2.1. iso8859-1

属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母a的编码为0x61=97。

很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在iso8859-1编码,以gb2312编码为例,应该是"d6d0 cec4"两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4"(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。

2.2. GB2312/GBK

这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。

2.3. unicode

这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母a为"00 61"。

需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。

2.4. UTF

考虑到unicode编码不兼容iso8859-1编码,而且容易占用更多的空间:因为对于英文字母,unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码,utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。

注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是最节省的。不过另一方面,值得说明的是,虽然utf编码对汉字使用3个字节,但即使对于汉字网页,utf编码也会比unicode编码节省,因为网页中包含了很多的英文字符。

3. java对字符的处理

在java应用软件中,会有多处涉及到字符集编码,有些地方需要进行正确的设置,有些地方需要进行一定程度的处理。

3.1. getBytes(charset)

这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。

3.2. new String(charset)

这是java字符串处理的另一个标准函数,和上一个函数的作用相反,将字节数组按照charset编码进行组合识别,最后转换为unicode存储。参考上述getBytes的例子,"gbk" 和"utf8"都可以得出正确的结果"4e2d 6587",但iso8859-1最后变成了"003f 003f"(两个问号)。

因为utf8可以用来表示/编码所有字符,所以new String( str.getBytes( "utf8" ), "utf8" ) === str,即完全可逆。
一般情况下为默认方式


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Edisonhs/archive/2009/10/02/4627191.aspx

分享到:
评论

相关推荐

    H264视频编码基本知识

    下面我们将深入探讨H.264视频编码的基本知识。 一、编码原理 H.264采用了混合编码方式,结合了帧内预测(Intra Prediction)、帧间预测(Inter Prediction)和变换编码(Transform Coding)等技术,以降低视频数据...

    H.264视频编码基本知识

    MPEG-1采用了类似H.261/H.263的基本算法,例如运动补偿帧间预测、二维DCT和VLC游程编码,并引入了I、P、B和D帧的概念,进一步提升了编码效率。 MPEG-2在MPEG-1的基础上进行改进,提高了图像分辨率,增加了对数字...

    H264视频编码基本知识,3700字word版本,可编辑,可用于写论文等

    此外,H.264还具有“网络友好”的特点,能更好地应对各种信道条件,适应误码和丢包情况,且其基本系统是开放的,无需版权费用。 H.264编码标准的这些优势使得它广泛应用于高清视频、网络流媒体、视频会议、移动设备...

    行程编码,JPEG压缩编码基本系统_jpeg压缩编码_Vc_图像压缩_

    总的来说,"行程编码,JPEG压缩编码基本系统_jpeg压缩编码_Vc_图像压缩_"这个主题涵盖了图像压缩的核心技术,包括了基本的编码理论和编程实践。无论是对理论研究还是实际开发,理解并掌握这些知识点都是非常重要的。...

    GBT7027-2002信息分类和编码的基本原则与方法

    《GBT7027-2002信息分类和编码的基本原则与方法》是一份重要的国家标准,它为信息管理和信息系统建设提供了科学的指导框架。在信息化社会中,信息的有序组织和有效管理至关重要,而信息分类和编码是实现这一目标的...

    java字符集编码问题

    #### 二、编码基本知识 1. **ISO 8859-1** ISO 8859-1是一种单字节编码标准,主要用于西欧语言。它支持0-255之间的字符,与ASCII编码类似,但范围更广。例如,字母‘a’的ISO 8859-1编码为0x61或97。然而,由于...

    JAVA字符编码系列三[借鉴].pdf

    1. **编码基本知识** - ISO8859-1是一种单字节编码,适用于英文,最多表示256个字符,不支持中文。 - GB2312和GBK是中文的国标码,GBK扩展了GB2312,可表示繁体和简体汉字,是双字节编码。 - Unicode是一种通用...

    中文编码基础知识介绍

    首先,GB2312是中华人民共和国于1981年发布的国家标准,全称为《信息交换用汉字编码字符集--基本集》。这个编码集包含7445个图形字符,其中6763个是汉字。GB2312采用双字节编码,每个字节有7位有效数据,因此高位...

    字符集编码

    #### 二、编码基本知识 ##### 2.1 ISO 8859-1 - **定义**:ISO 8859-1 是一种单字节编码标准,主要用于西欧语言,如英语、法语等。 - **特点**: - 最多能表示的字符范围是0-255。 - 应用于英文系列,如字母‘a...

    c2_3_编码缓存基本限制_

    图像2和图像3可能展示了编码缓存系统的基本工作原理和性能分析。在这些图中,我们可能会看到以下几个关键知识点: 1. **缓存容量与性能**:缓存大小直接影响了能够存储的数据量,从而影响缓存命中率。如果缓存容量...

    Java应用中的编码问题

    本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e...

    嵌入式系统/ARM技术中的H.264视频编码基本知识

     视频编码技术基本是由ISO/IEC制定的MPEG-x和ITU-T制定的H.26x两大系列视频编码国际标准的推出。一个共同的不断追求的目标,从H.261视频编码建议,到H.262/3、MPEG-1/2/4等,即在尽可能低的码率(或存储容量)下...

    二叉树的基本操作及哈夫曼编码译码系统

    本项目涉及二叉树的基本操作以及哈夫曼编码和译码系统,下面将对这些知识点进行详细解释。 首先,二叉树的基本操作主要包括创建、插入、删除和遍历。创建二叉树通常从空节点开始,插入节点时要考虑新节点相对于现有...

    Shell命令行编码脚本的基本知识

    Shell命令行编码脚本的基本知识

    图像编码图像编码图像编码

    图像编码的基本原理是利用这些冗余信息,尤其是空间、时间和视觉冗余,来减少所需的比特数,同时保持图像的有效信息。无损压缩方法在解压缩后能完全恢复原始图像,而有损压缩则会引入一定程度的失真,但能实现更高的...

    对我帮助极大的好东西‘编码问题详解’

    1. **编码基本知识**: - ISO8859-1是一种单字节编码,适用于英文字符,最多可表示256个字符。由于其简单和与ASCII兼容,它在某些场景下仍被广泛使用,尽管它无法表示中文字符。 - GB2312/GBK是中国国家标准的汉字...

    霍夫曼编码仿真实验_编码_霍夫曼编码_matlab_

    霍夫曼编码的基本原理是:频繁出现的字符用较短的编码,不常出现的字符用较长的编码,这样可以使得整体编码长度最短。首先,我们需要统计输入文本中各个字符的出现频率,构建一个频率树,也称为霍夫曼树。这个树是一...

    汉字编码常识

    汉字编码常识是用于解决程序开发中程序员统一编码的知识,解决程序出现乱码的问题。汉字编码常识涉及到多种编码规范,包括 ASCII、Unicode、UTF-8、GBK 等。 一、ASCII 编码 ASCII 编码是最早的一种字符编码规范,...

    信息论与编码技术知识要点

    综上所述,信息论与编码技术的知识点包括信息的定义、通信系统模型、信息熵、信源分类、香农第一定理以及信道分类和性能分析等多个方面。这些理论构成了现代通信系统的基础,对理解和设计高效、可靠的通信网络至关...

Global site tag (gtag.js) - Google Analytics