一、为什么会有不同的编码
在英文中,每个字符都有一个数字与之对应,比如:a->41,我们只会把41对应的二进制数值保存到计算机中。计算机的最小存储单元是字节,1btye=8bit .8位(11111111=255),所以只能存储255种情况。这在英文中够用。就是所谓的assii编码。
但是汉字比较多,远不止255种情况,所以用两个字节存储。(65535种情况)。这是gb2312码表。但是后来发现,gb2312还是不能存储所有的中文字符,于是有发现了gbk。gbk包含gb2312,gb2312包含assii。
我们知道,世界的国家很多,每个国家都有自己的语言,所以就有对应的编码。如果每个国家都整一台,就比较繁琐,所以出现了万国码(unicode),其中所有的字符都是占两个字节。但是我们知道,英文字符用一个字节是可以保存的,用两个就造成了浪费。所以又出现了utf-8(英文占一个字节,汉字占三个字节)。
二、如何保证不出现乱码?
保存的时候,选择的编码方式和读取的时候,显示的编码一致,或者兼容保存的时候的编码方式。
注意:
1.乱码只出现在文本文件中。
2.操作系统,会根据当前选择的地区和语言,默认编码方式。
3.FileStream默认utf-8编码。