字符编码: 二进制 和 你所能认识的字符 之间的相互转换的一个过程
必须经过一个过程:
字符 -------->翻译过程 ------->数字总而言之,字符编码是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。
一张图就能让你明白,骚不骚
首先明确概念
文件从内存刷到硬盘的操作简称存文件文件从硬盘读到内存的操作简称读文件乱码的两种情况:
乱码一:存文件时就已经乱码存文件时,由于文件内有各个国家的文字,我们单以shiftjis去存, 本质上其他国家的文字由于在shiftjis中没有找到对应关系而导致存储失败。但当我们硬要存的时候,编辑并不会报错(难道你的编码错误,编辑器这个软件就跟着崩溃了吗???),但毫无疑问,不能存而硬存,肯定是乱存了,即存文件阶段就已经发生乱码,而当我们用shiftjis打开文件时,日文可以正常显示,而中文则乱码了。
乱码二:存文件时不乱码而读文件时乱码存文件时用utf-8编码,保证兼容万国,不会乱码,而读文件时选择了错误的解码方式,比如gbk,则在读阶段发生乱码,读阶段发生乱码是可以解决的,选对正确的解码方式就ok了。
保证不乱码的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码。
windows电脑的记事本默认为gbk编码,除此之外其他的软件默认编码为utf8
python2用的是ascii, python3默认是utf8读取字符
# coding:gbk会告诉python3解释器用gbk编码读取字符
你看到的其实是unicode
但是终端帮你把这个unicode的0和1做一个转换,从unicode转换成了终端能够识别的编码格式,然后变成中文
# coding:gbk a = '中文' # 用unicode编码存储了这堆0和1 print(a) # 010101010假设终端的默认编码是gbk , 认识 unicode编码的变量
假设终端的默认编码是utf8,认识 unicode编码的变量
unicode + 指定的coding编码(str类型)
# coding:gbk a = '中文' # 用gbk编码存储了这堆0和1 a = u'中文' # 用unicode编码存储了这堆0和1 print(a)终端是一个文本编辑器,会有默认编码.
假设终端的默认编码是gbk , 认识 gbk编码的变量
假设终端的默认编码是utf8, 不认识 gbk编码的变量
转载于:https://www.cnblogs.com/dadazunzhe/p/11317365.html
相关资源:UTF8字符串转换工具绿色版