Title Loading...
- Time Loading...
- Wordcount Loading...
Catalogue
Python3 下的编码问题 - UnicodeDecodeError
今日为 TeeleBot 编写插件的时候,有幸遇到了Python的疑难杂症之一:中文编码。
在我试图打开一个含有中文字符的文件的时候,报了一个错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbc in position 2: invalid start byte
按以往的经验,我会在脚本文件的第一行写上默认编码声明:
#-*- coding:utf-8 -*-
而 TeeleBot 所有源码文件的头部,我都加上了这句声明。后来查阅Python3的手册才得知,在Python3中,源文件的默认编码为utf-8
,#-*- coding:utf-8 -*-
这句声明本是服务于Python2的,在Python3中已经废止。因为在Python2中的,若没有声明别的编码方式,则默认以ASCII编码作为标准编码方式的。若在Python3中使用,容易造成编码混乱的问题。
因此,解决办法如下:
1.删除所有源码文件头部的默认编码声明;
2.在需要读取操作中文的地方,手动指定编码为 UTF-8(其实应该是按照utf-8格式解码为unicode);
3.必要情况下可能还需要将含有中文字符的资源文件转换为 UTF-8 格式。