最近写一个Java程序,目标是将文件的编码格式转换,在这里整理一下编码的知识。
参考原文地址:http://wenku.baidu.com/view/50a93067783e0912a2162a86.html
编码:是指计算机中的二进制和字符集的对应关系。
编码格式:是指如何进行编码存储和传输。
===================笔记详情==============
- 一个字节被分为8位二进制,总共有256种编码方式。
- ANSI 标准:前127种编码用来表示英文大小写,数字标点,特殊用法等。
- GBK 标准:用两个字节来表示汉字,第一个字节成为高字节,第二个字节称为低字节。第一个字节大于127则表示 是一个汉字。这种被称为DBCS。
- 全角字符:把本来在ANSI中的的数字、标点、字母都统统重新编了两个字节长的编码。
- Unicode标准:ISO制定了一个双字节的字符集包含了世界上所有的字符,统一采用16位来统一表示所有的字符,对于ascii里的那些“半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于"半角"英文符号只需要用到低8位,所以其高 8位永远是0。
- 无论是什么语言,单位都被称为一个字符,对应的字节都是2个字节。可以组合出65535个不同的字符。
- UTF的产生:对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF。
- UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到4个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言。
- UTF8的编码格式如下:
- 一下图为例:它选确定它有几个字节,然后按照字节数写入固定的格式,然后在X中填上原来的编码。
======================补充知识==========================
- 乱码:乱码在实际存储的时候是一个2进制数据。只是在解析的时候使用的字库是不同的,所以映射的东西和原来编辑的时候是不同的的。比如你原来写了一个“汉”,变成二进制以后就跟00XEF之类的差不多。但是显示的时候使用的是其它的字库。对应的可能是“■ē”之类的。
==============================缩写=================
- ANSI:American National Standards Institute(ANSI——美国国家标准学会)
- DBCS:Double Byte Charecter Set 双字节字符集。
- ISO:国际标准化组织
- UNICODE:"Universal Multiple-Octet Coded Character Set" 简称 UCS ,俗称UNICODE
- UTF:Universal Transformation Format