图片记事本打开编码含义?

字符编码问题一直深深困扰着我~无论是网页还是数据库抑或是单纯的文件字符流,总有各种奇怪的编码问题。之所以称之为奇怪其实主要还是因为我对于编码的知识了解太浅。近来深刻觉醒编码问题非解决不行,故将所阅读的资料内容概括整理如下。

一直以来我常常把字符编码和字符集混着说,而周围的人大多也都不区分它们的含义。不过真要较真的话,字符编码和字符集其实还是很有区别的。

当然,从简单字符集的角度来说,按照惯例,人们认为字符集和字符编码是同义词,因为使用同样的标准来定义提供什么字符并且这些字符如何编码到一系列的代码单元(通常一个字符一个单元)。

但是对于由统一码和通用字符集所构成的现代字符编码模型来说,这些概念之间有了细微的区别。它们将字符编码的概念分为:有哪些字符、它们的编号、这些编号如何编码成一系列的“码元”(有限大小的数字)以及最后这些单元如何组成八位字节流。区分这些概念的核心思想是建立一个能够用不同方法来编码的一个通用字符集。为了正确地表示这个模型需要更多比“字符集”和“字符编码”更为精确的术语表示。现代模型中所用的术语有字符集(Character Set)、编码字符集(CCS:Coded Character Set)、字符编码表(CEF:Character Encoding Form)、字符编码方案(CES:Character Encoding Scheme)等。这里的定义比较学术,大家感兴趣的可以自己查找维基百科,链接在本文后面的参考资料里可以找到。为了好记,我又找到一些比较通俗的关于字符集与字符编码区别的说法:

字符集:字符的集合,规定了在这些集合里面有哪些字符。比如Unicode字符集,目标就是收纳了这个世界上所有语言的文字、符号等。

字符编码:就是规定用一个字节还是用多个字节来存储一个字符,用固定的二进制码值表示某个字符。注意,字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多个字节表示等问题,则是由编码来决定的。像Unicode字符集的编码方式有很多,诸如UTF-8、UFT-16、UTF-32等。

要解决编码问题,首先要明确究竟都有哪些编码,它们有什么样的特点,相互之间有何种关系。这样使用起来才能够有的放矢。

在《Java编程思想》一书中,作者Bruce Eckel就是通过讲述文件输入输出流发展历史的方式清晰地展示了Java IO包中的各个stream、reader和writer该如何使用。我个人深感这是一种很好的学习方法,所以这里借鉴一下,也尽量按照字符编码的发展历史来介绍各个编码,这样我们就很容易明白这种编码为什么会诞生,以及它的特性了。

首先先解释一下“字符”与“字节”的区别:

字节(octet):是一个8位的物理存贮单元,取值范围一定是0~255。

字符(character):是一个文化相关的符号,或说是一个语言上的符号,如“中”字就是一个字符。字符所占的大小由其编码方式解决,比如“中”在UTF-8中占3个字节(0xE4A8AD),而在GBK中,则占两个字节(0xD6D0)。

我要回帖

更多关于 如何用记事本打开图片 的文章

 

随机推荐