python3 unicod,utf-8,gbk的编码和解码中文显示问题
python3的字符编码让人头疼。 这个也不是一篇介绍gbk, utf-8, unicode怎么表示英文,中文字符的基础知识总结。 网上有很多类似的文章,目前也不需要升入学习到了解各个bit位表示什么含义。 目的: 清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示。 前提: 了解不同编码用不同的二级制编码和长度来表示字符。 在python3中,各种字符编码之间的互相转换都要通过unicode作为中间编码转换。gbk转换成unicode,再从unicode转换成utf-8。 分析: 要区分4种编码解码概念, 1.编写代码文件时的编码。 notepad++ 在菜单“编码”中有选择,在状态栏可以看到编码类型。 pycharm 在菜单"file","editor","file encoding"中可以设置默认编码。在状态栏可以看到编码类型。 2.python3代码中申明的解码格式。 在代码中#coding=gbk。 编码声明告诉了python编译器以什么格式的编码来解码.py文件,它不会改变系统默认编码和本地默认编码, 也不是用于声明当前代码文件的编码格式的,而是声明当前代码文件的解码方式。换句话说, 代码文件的编码格式取决于你使用的编辑器,而如何解码该文件取决于文件头处的编码声明。 一般地,编码格式应当与解码格式一致