java 字符集与编码 unicode、utf-8、utf-16、gbk

字符集和编码

字符集,是字符的集合,你可以把它当作一本字典,我们都知道字典与字典不一样,比如新华字典只包含汉字,日语字典只包含日语,英语字典只包含英语,而包含世界上全部字符的字典就是unicode,注意,字符集仅仅规定了某个字符的数值,比如,1表示a,2表示b,3表示c,字符集不规定存储传输,那是编码方案的事情。


编码,就是具体的存储、传输方案,比如可以用1个字节表示a,也可以2个字节表示a


等长编码方案:就是用固定的字节数,表示字符集中所有的字符,比如用2个字节表示所有的字符

变长编码方案:某个字符的字节长度是不确定的,比如在字典中,最前边的100个字符用2个字节编码,其余的,用3个字节编码等等。



unicode:它是一种字符集,仅仅是符号的集合,它的编码方案包含utf8/utf16/utf32

utf-8、utf-16、utf-32:都是unicode的编码解决方案,不同的是,对同一字符,可能使用长度不等的字节数表示,比如,对a,utf-8用1个字节表示,utf-16用2个字节表示,utf-32用4个字节表示,这三种编码方案中有的是变长编码方案,有的是等长编码方案

gbk:既是字符集,也是编码方案,gbk收录了常用的汉字,gbk是双字节字符集。但这是在“全角”情况下,半角情况下数字、英文字母都占用一个字节,兼容ASCII

big5:台湾地区推出的字符集兼编码方案

iso8859-1:即是字符集也是编码方案,仅仅包含数字和字母和标点符号,都用1个字节表示





你可能感兴趣的:(java 字符集与编码 unicode、utf-8、utf-16、gbk)