🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] ## 编码与乱码 ### Python2编码 内存中字符默认编码是ASCI,默认文件编码亦是ASCII; 读到内存后py2解释器不会进行编码转换; python 2中的unicode是一个单独的类型,用u'路飞'来表示; python 2 str == bytes,bytes直接是按字符编码存成的2进制格式在内存里. ### Python3编码 内存中字符串都是unicode,默认文件编码是utf-8; 读到内存会被py3解释器自动转成unicode; bytes与str做了明确区分; 所有的unicode字符编码后都会变成bytes格式. ### 解码与编码 Py3 自动把文件编码转为unicode是调用了decode(解码) 和encode(编码) 方法 UTF-8 --> decode 解码 --> Unicode Unicode --> encode 编码 --> GBK / UTF-8 ### 图解 日本编码一解码(decode)-> unicode-编码(encode)--> gbk ![编解码图解](http://static.zybuluo.com/agocan/02jb3tzxtlzp4rj5faxj4rs5/image_1c1mttu8ke1a1eju19cm191f1mhd4k.png) Python只要出现各种编码问题,无非是哪里的编码设置出错了 ### 常见编码错误的原因有: * Python解释器的默认编码 * Python源文件文件编码 * Terminal使用的编码 * 操作系统的语言设置