java编码相关知识点


一、ASCII 码

常见ACSII码
A-Z a-z 0-9 + - * !@ 等特殊符号等
一个ASCII码占用一个字节(一个字节8位)
计算机使用的是二进制:一个位置(一位)只能由0或1组成,规定8位为一个字节,8位换算成10进制范围是:0~255,也就是总共256个数。
在这里插入图片描述
美国人说他要从256个数字中拿一些出来代表:数字或者字母,符号和一些特殊字符(有些功能但是看见的东西,比如换行、空格等)。总共用去了33个特殊字符+95个可见字符=128个字符,也就是用了7位。那么这128个字符就叫做ASCII码。
这些对美国来说够了,但是对其他语言来说是不够的,所以有些国家把没用的一些也规定了符号就叫做“扩展ASCII码”

二、字符

   英语用一个字节甚至都用不完就表示出绝大部分的符号。但是类似汉语众多的文字一个字节明显是不够用的。
    一个不够就多拿几个一起代表,于是就定了个规则,两个或者三个字节组合起来代表一个符号。比如代表中文的(GB2312编码规范)就规定用2个字节来标识一个汉字(两个字节相当于最多65536个符号,实际上GB2312刚开始制定的时候只规定了6713个汉字)。
把多个字节合起来代表一个符号,这就叫字符。也就是一个字符包含多个字节可能是两个也可能是三个。
    继续中文举例,GB2312作为刚开始制定的标准,代表的汉字和符号明显是不够用的。因此咱们后来又进行了扩展,扩展后的名字叫GBK,这时候就收录了汉字21003个。因为GBK是GB2312的扩展,所以能想到只要支持GB2312那指定支持GBK。
每个国家都有自己的符号,因此每个国家也都自己规定自己的字符编码,各自为战。计算机领域的专家们看不去了于是就联合各国的专家们打算弄一个字符编码能代表所有国家的文字和符号。因此Unicode标准就诞生了,所以Unicode也叫万国码 ,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。这样我们就能在同一台电脑上看到各种文字或者语言了。
    Unicode将世界上所有的文字用2个字节统一进行编码。它的几个扩展:UCS4、UTF-8、UTF-16(UTF后的数字代表编码的最小单位,如UTF-8表示最小单位1字节)。这几个是在对Unicode又进行了扩展。
    其中UTF-8是最常用的,UTF-8是可变字符,因为它的一个字符可以是一个字节也可以是2个字节,最多4个字节。
⚠️ UTF-8表示中文的时候是占3个字节!
⚠️ GBK表示中文占用2个字节!

三、乱码

   为什么会产生乱码?每个国家都定义了自己的编码标准,比如中国的GBK中“人”字可能用1521表示,但是在UTF-8中1521表示的是这玩意儿:“釰”,5211才是“人”字。所以如果一个文件在写的时候就指定编码格式。重新打开的时候如果你改变了编码格式,那么显示的可就是当前编码格式下展示出来的内容。这时候乱七八糟的你就看不懂了!就是乱码!
因此,以后出现乱码,要么人家就这么写的(但凡上过小学…),要么你读取的时候指定的编码方式跟人家写的时候不一样。当然在给别人提供文件的时候就要注意:约定好咱俩用什么编码,否则我的心事写出来你也看不懂。
   一般情况下常用的数字,字母也就是ASCII码用什么编码打开都不会乱,因为人家首先做了全球标准。后来者不好意思,你得兼容它。也就是如果你的文件里只有ABCDEFG1234这些个玩意儿,用什么编码都行。

四、通常情况

一般来说中文版的windows系统用的是GBK作为默认编码。
Liunx/Unix/MAC系统一般用UTF-8,
常用的字符编码:
ASCII码、Unicode 、Utf-8、GBK /GB2312 /GB18030
中文的基本不是utf-8就是GBK

五、ASCII码表

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值