全网最全面、全详细的编码、解码知识

温馨提示: 本文大约5097字,阅读完大概需要3-5分钟,希望您能耐心看完,倘若你对该知识点已经比较熟悉,你可以直接跳转到你感兴趣的地方,希望阅读本文能够对您有所帮助,如果阅读过程中有什么好的建议、看法,欢迎在文章下方留言或者私信我,您的意见对我非常宝贵,再次感谢你阅读本文 。
一: 编码江湖之初恩怨  在编码的江湖中,"乱码"算得上我们遇到的最难缠的"敌人"之一,一旦遇上、轻则心情烦躁、重则心态崩溃 。文章开头,让我们再次重温与"乱码"初见面的名场面 。
String str = "乱码,你好";byte[] bytes = str.getBytes("GBK");String string = new String(bytes,"UTF-8");System.out.println(string);  运行结果:

全网最全面、全详细的编码、解码知识

文章插图
 
  是不是感觉很熟悉,这个是出现乱码最简单的例子,虽然在编程时我们肯定不会这样写,但是,乱码出现的原因都是相通的,想要知道为什么?那就继续我们的"乱码"江湖的闯荡吧 。
二: 编码江湖之"乱码"家族  想要从根本上铲除"乱码"这个敌人,我们就必须对它的生命历程有清楚的认识,正所谓:"知己知彼,才能百战不殆" 。  
(一)"乱码"产生的原因:   
在编码江湖中,我们想要生存下来,首先得懂得这个江湖的规则,计算机就是我们闯荡的编码江湖,但是,计算机的规则约定: 它们只能够读懂二进制数0和1,我们能够表达的确实对应的字符,为了在编码程序中生存下来,我们需要一种技术能够将我们表达的字符转换成对应计算机能够读懂的二进制数0和1,这种技术就叫编码,但是,因为闯荡这者的不同,所表达的字符就存在差异,所以针对不同的闯荡地区,存在不同的编码,如果不是同一个地区使用了其他地区的编码方式进行转换,就会出现"乱码",计算机就会看不懂 。
三: 江湖规则之基础知识想要在计算机世界行走江湖,就必须对这个世界的基础概念有个清晰的认识,下面就讲解关于计算机世界的基础知识讲解:
Bit(位)计算机世界的最小存储单位,也是计算机能够读懂的,可取的值是0或1,每个值就标识1位,如:0000 0001表示的就是8位,转换成我们认识的数值(十进制)就是1 。
Byte(字节)计算机世界中的一种表示存储容量的单位,1Byte = 8Bit,即一个字节可以存储8位,除了Byte外,计算机还有以下常用的存储容量单位以及他们之间的转换关系:
1Byte = 8bit1KB(KByte) = 1024Byte = (1024 * 8)bit1MB(MByte) = 1024KB =(1024 * 1024)Byte = (1024 * 1024 * 8)bit1GB = 1024MB =  (1024 * 1024)KB =(1024 * 1024 * 1024)Byte = (1024 * 1024 * 8)bit1T = 1024GB = (1024 * 1024)MB =  (1024 * 1024 * 1024)KB =(1024 * 1024 * 1024 * 1024)Byte = (1024 * 1024 * 1024 * 8)bit字符字符也就是我们在计算机表达的"语言",常见的包括:数值、字母、文字和符号,如:1、a、A、试、$...都表示的是一个字符,在计算机世界中,不同的字符可能需要不同的存储容量进行存储 。
字符集集:表示集合,字符集则表示多个字符的集合,每个字符集可以包括不同的字符,常见的字符集如下:
ASCII字符集GB2312字符集Unicode字符集字符编码定义: 将字符集中的字符编码(映射)成集合中的某一个对象如:比特模式、自然数序列、电脉冲等,以方便字符在计算机中存储和在计算机网络中传递
字符集与字符编码的区别字符集表示:多个字符的集合,字符编码则是:将字符集中的字符映射为特定的字节或者字节序列,它表示的是一种规则 。通常特定的字符集采用特定的编码方式(即一种字符集对应一种字符编码,如: ASCII、ISO-8859-1、GB2312、GBK都是表示了字符集又表示了对应的字符编码,但Unicode字符集是特例,它对应的字符编码有:UTF-8、UTF-16、UTF-32)
查看电脑默认的字符编码1、打开控制台(win+R),输入cmd回车2、右键菜单栏选择属性3、当前代码页就是对应的字符集编码
全网最全面、全详细的编码、解码知识

文章插图
 

全网最全面、全详细的编码、解码知识

文章插图
 


推荐阅读