Unicode、UTF-8?和?ISO8859-1到底有什么区别〈转〉Unicode、UTF-8?和?ISO8859-1到底有什么区别??
1.本文主要包括以下几个方面:
编码基本知识,java,系统软件,url,工具软件等。??
在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0?cec4",Unicode编码为"4e2d?6587",UTF编码就是"e4b8ad?e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。??
在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0?cec4",Unicode编码为"4e2d?6587",UTF编码就是"e4b8ad?e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。??
2.?编码基本知识??
最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。??
2.1.?iso8859-1?通常叫做Latin-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"。