前言
这种问题中文乱码本质是导入的代码编码格式与自己的IDE编码格式不统一导致的。
解决方案
- 将自己的IDE编码格式修改为UTF-8(国际通用)。
- 如果还是乱码,将IDE编码格式修改为GBK。
主要是了解ASCII字符集,中文字符集。
ASCII
计算机主要是通过0与1去表达相关信息,对于数字0-9,以及大小写字母字符一共62,考虑到还有特殊字符(如:!、@、#、$、%、^、&、*、{、}、|等)和不可见的控制字符,必然超过64个,这又该如何表示呢?注意这里特别提到了“64" ,因为它的特殊性,即2的6次方。使用刚才的0与1组合,至少是7组连续的信号量。计算机在诞生之初对于存储和传输介质实在没有什么信心,所以预留了一一个bit(位)用于奇偶校验,这就是1个Byte(字节)由8个bit组成的来历,也就是ASCII码。
注意
在ASCI码中,有两个特殊的控制字符10和13,前者是LF即“\n”,后者是CR即“\r”,在编码过程中,代码的换行虽然是默认不可见的,但在不同的操作系统中,表示方式是不一样的。在UNIX系统中,换行使用换行符“\n”;在Windows系统中,换行使用“\r\n”:在旧版macOS,换行使用回车符“\r”,在新版macos中使用与UNX系统相同的换行方式。
中文字符集
中文字符远远大于ASCII所表达的数量。 毕竟ASCH码先入为主,必须在它基础上继续编码,也必须想办法和它兼容。1个字节只能表示128个字符,所以采用双字节进行编码。早期使用的标准GB2312收录了6763个常用汉字。而GBK (K是拼音kuo的首字母,是扩展的意思)支持繁体,兼容GB2312。而后来的GB18030是国家标准,在技术上是GBK的超集并与之兼容。1994年正式公布的Unicode,为每种语言中的每个字符都设定了唯一编码, 以满足跨语言的交流,分为编码方式和实现方式。实现Unicode的编码格式有三种: UTF-8、 UTF-16、UTF-32,UTF ( Unicode Transformation Format )即Unicode字符集转换格式,可以理解为对Unicode的压缩方式。根据二八原则,常用文字只占文字总数的20%左右。其中,UTF-8是-种以字节为单位,针对Unicode的可变长度字符编码,用1 ~ 6个字节对Unicode字符进行编码压缩,目的是用较少的字节表示最常用的字符。此规则能有效地降低数据存储和传输成本。