通俗了解字符编码
来源:互联网 发布:鬼刀画册淘宝 编辑:程序博客网 时间:2024/06/05 19:03
首先,我先在这浅谈一下本人对字符编码的认识,说得不对的地方恳请大家批评指正。
目前的 字符编码 大体上分三种
1.单字节字符集,用1个字节来表示一个字符,如ASCII就属于这种
2.多字节字符集, 其实在windows下这类字符集大体上 也只分为 单字节字符集 和 双字节字符集,但大多使用的都是 双字节字符,比如 GB-2312
3.Unicode(统一码)
编码历史
在计算机中,所有的数据都是以二进制的形式储存在磁盘中的,我们知道,二进制又可以与其他进制相互转换,所以,我们可以理解为 计算机可以存储任意进制的数值。当然,我们这里讨论的是 文本字符数据的存储, 一些 如:美国、英国、意大利 等西方国家的所有字符 就是由 大小写字母 a~z 表示的,加上数字和一些其他的符号等 字符数量也不超过128个,为了在计算机中存储这些信息, ANSI 制定了 ASCII码,目的当然就是 对非数值数据进行编码。 ASCII规定使用 1 个字节 表示一个字符,如 字符 ‘A’ 就可以用十进制 65 十六进制 0x41 来表示,换成二进制就是 0110001,ASCII码的出现 解决了 英文字符在计算机中的存储问题。
但是后来,随着世界各国语言加入计算机,显然 这一个字节表示字符的ASCII码就完全不能满足大众需求了,所以 后来各国 在ASCII码的基础上,自行 制定了 自己的字符集,这些字符集往往兼容 ASCII ,也就是说 它们 都是在大于128 的基础上 制定字符码的,前128个字符 还是 对应着 基本ASCII的前128个字符,同时,这些语言大多都是由两个甚至更多的字节来存储的。比如 我们国家由中国国家标准总局1980年发布的GB-2312编码(《信息交换用汉字编码字符集》)就是使用2个字节来表示一个汉字。所以 ,严格的来说,诸如GB-2312这类的 由各国 自行发布的编码 应该 隶属于 MBCS (多字节字符集)了。
由于不同 国家的语言都 制定了 一套不同的字符集,使用起来非常散乱。因此相应的问题就来了,比如 很可能出现 同一个 二进制数值 在不同的国家 就会解释成不同的字符,例如一个 在日本开发的程序(使用的日文),在 中国使用时,软件界面上的字符很可能不是日文了,而变成了一堆乱码。再 比如 要想打开一个文本文件,你不仅要知道他的编码方式,还要安装对应的编码表,否则就可能给你显示出一堆乱码, 还有很多时候,我们的电子邮件或者网页中经常会遇到乱码,这就是因为信息的提供者和信息的读取者使用了不同的编码方式。
所以这种散乱的编码在涉及国际语言交流时需要经常转换字符集就显得非常不便了。于是后来 Unicode字符集被提出来了。
Unicode固定使用16bit (两个字节、一个字)来表示一个字符,可以从0x0000~0xFFFF 即可以表示 65536个字符,这几乎完全可以涵盖所有国家语言的字符总和了。有了Unicode,不同语言字符的集都能固定的总和在一个字符集里面了,通俗点就是 每个字符 都有完全不同的唯一二进制了,解决了 MBCS 的二义性。
为了 方便信息交流,标准的 Unicode 被称为 UTF-16, 后来又为了 双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8。Unicode一共有三套编码方式 :
UTF-8 UTF-16 UTF-32
值得一提的是UTF-8保留了ASCII的编码作为其一部分,比如在UTF-8和 ASCII中,'A' 的编码都是0x41,而 UTF-16 和 UTF-32 分别是Unicode的16位和32位的编码方式。
- 通俗了解字符编码
- 字符编码通俗讲解
- https原理通俗了解
- 编码通俗解释
- 对java里面的字符编码的进一步了解
- 对于字符编码,程序员的话应该了解它的哪些方面?
- 每个程序员的都应该了解的字符编码
- 每个程序员的都应该了解的字符编码
- 编码和解码通俗解释
- 编码--了解编码,网站编码
- 关于EJB讲解,通俗了解EJB
- 字符编码
- 字符编码
- 字符编码
- 字符 编码
- 字符编码
- 字符编码
- 字符编码
- OpenGL ES Tutorial for Android
- HDU--4452
- poj2457 - Part Acquisition (最短路径问题)(邻接表 Dijkstra + 并查集 )
- 了解CMS(Concurrent Mark-Sweep)垃圾回收器
- 一个研究生毕业后的职业规划 -----我今年39岁了,25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路,有一些经验和教训
- 通俗了解字符编码
- 使用 STLport 编译 Protocol Buffers
- 安装 php + nginx 环境
- uva 1401 - Remember the Word(字典树+dp)
- Less--动态样式语言
- Android开发————Fragment生命周期
- PAT 1060 Are They Equal 暴力
- ajax多图上传 java版本
- 《Android编程权威指南》第三章个人学习笔记