# -*- coding: utf-8 -*-字符编码是啥?
在弄清楚字符编码是啥之前我们要先考虑一个问题。如果计算机最基础的就是0和1,那么他们是如何识别我们输入的英文字母和数字的。
下面是数学知识,我们现代人常用的计数方式是十进制,就是从1数到9如果再数一个数前面就进以为成为10.计算机最基础的就是二进制,0和1数到1再网上书就进一位。二进制和十进制是可以互相转换的。比如二进制10就是十进制数字2.计算机通过二进制可以给十进制进行编码。除此之外二进制还可以转换成八进制和十六进制。通过这些数学转换,我们可以创建一个集合。可以理解成可以通过二级制,八进制,十进制,十六进制的数学关系创建一张对应表。
就像下图一样。dec是十进制,HX是十六进制 Oct是八进制。每一个数字都可以对应一个字符,比如字母和数字。这样我们就可以向计算机输入英文了。
通过上面的表让我们认识到,变成本质上就是英文和数学的结合产物。
当我们弄清楚计算机数学和英语的关系之后,我们再来说字符编码,说白了字符编码就是类似上面的表,上面的表示ascii表,为了更好的表示字符,还有很多比较强大的表。我们在使用记事本,word等文本编辑程序的时候,就会使用到这些字符表。
有一种字符编码叫做GBK,这个是中文字符集,这个字符集和ascii的表感觉差不多,但是由于汉子比较复杂,所以有些汉子内容需要通过一个公式来计算。
好吧我也不知道这个公式表达的是什么。
一般GBK只在中文软件程序中使用,如果在英文软件程序环境下,程序不能解析GBK那么程序就会出现乱码。
为了保证所有的程序环境都可以正常显示文字,就出现了UTF-8。这个字符编码可以很好的兼容中文英文,python默认就会读取UTF-8字符编码的文件。
那我们如何设置字符编码?
如果你和我一样的文本编辑器可以在菜单中找到这个选项,然后你发现有很多字符编码可以选择。
除此之外,我们还可以使用下面这行代码来让python使用utf-8的模式来读取这个文件。
# -*- coding: utf-8 -*-
就是告诉python我的文件要用utf-8字符集来解析。
在未来的变成当中,html,java都会遇到很多字符编码的问题,一般文字出现乱码都是字符编码的问题。