一个汉字一个字符!不信你去java输入char ch = '汉’看看报不报错

学习java也有段时间了,一直都是毛里毛糙的学习,但都是停留在略懂阶段,似乎会,实际上差得远了,,还是要沉下来心一点一点学呀,慢慢积累,不怕慢,对一个知识点彻底明白了会感觉收获颇多,走马观花地学总感觉空落落的。

先说编码

计算机存放数据只能存放数字(几进制的那种),所有的字符都会被转换为不同的数字。
英文、中文都是数据,一个汉字一个字母都是一个字符,但计算机读取时会转化为字节,一般情况下英文字母占一个字节,使用ISO-8859-1编码就可以了,而汉字占用字节数多于1,此时使用ISO-8859-1编码就会乱码,因为放不下,支持汉字编码的是GBK,而UNICODE编码格式可以编码所有类型的语言。
在这里插入图片描述

1:ISO-8859-1支持 ASCII 编码的所有字符(数字、西欧字母及键盘上的各种符号 )
2:GBK GB2312 BIG5 中文
3:UNICODE (统一码,万国码)
其中
1:ISO-8859-1 包含 ASCII
2:GB2312 是简体中文,BIG5是繁体中文,GBK同时包含简体和繁体以及日文。
3:UNICODE包括了所有的文字,无论中文,英文,藏文,法文,世界所有的文字都包含其中。UNICODE根据不同标准也会进行细分,UCS-2标准每个数字占2个字节内存,受制于2字节数量的限制,UCS-2只能表示最多65536个字符。Unicode的4字节形式被称为UCS-4或UTF-32,能够定义Unicode的全部扩展。采用这种编码格式时,如果英文较多则会很浪费空间,在这种情况下,就出现了UNICODE的各种减肥子编码, 比如UTF-8对数字和字母就使用一个字节,而对汉字就使用3个字节,从而达到了减肥还能保证健康的效果UTF-8,UTF-16针对不同类型的数据有不同的减肥效果

再说字节与字符

字节(Byte)是计量单位,表示数据量多少,字符只是计算机中使用的字母、数字、字(汉字)和符号

不同编码格式一个字符对应不同的字节(中英文符号与字母或汉字都作为字符,占用字节数都一一对应):

1:ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。
2:GBK编码中,英文字母一个字节,一个中文汉字两个字节。
3:UTF-8 编码中,一个英文字母为一个字节,一个中文为三个字节。
4:Unicode 编码中,一个英文为一个字节,一个中文为两个字节。
5:UTF-16 编码中,一个英文字母字符或一个汉字字符存储都需要 2 个字节。
6:UTF-32 编码中,世界上任何字符的存储都需要 4 个字节。

差不多了解了字符字节关系了吧,占几个字节是看编码格式的,这些编码方式中具体中英文占几个字节,还是查各自编码的官方数据为准吧,网上五花八门的,我摘抄自菜鸟,,,有问题找菜鸟

在UTF-8中,一个汉字为什么需要三个字节?

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐