目前在作的项目中,有一个列表用到的数据没有找到能直接知足需求的数据,给到个人文件里面是一张sql表,须要本身从sql表中,洗出本身须要的数据,因而想到了Python.python
在使用python读取文件的时候,报了下面的错误:UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte.
sql
网上一开始查到帖子说是编码格式不对,须要在python 文件的顶上添加 # codeing= utf-8
,以支持中文编码,因为给到的sql 文件中,确实含有中文,因而就加上了上面的utf-8的支持,满怀但愿的执行Python程序,结果仍是报了一样的错。vim
通过一番查找,找到了真正的解决方法,就是文件的编码格式不对,须要在文件读取的时候设置正确的编码格式,或者直接修改文件的编码格式为程序默认支持的格式。解决方法以下:编辑器
一、查看文件的编码格式: vim/vi编辑器(进入esc命令模式),执行 set fileencoding,查看文件的编码格式,在Python程序中把文件读取时的格式设置为该编码格式,即能正确读取文件。
二、更改文件的编码格式: vim/vi编辑器(进入esc命令模式),执行命令, set fileencoding=utf-8,而后回车,此时咱们将文件的格式改为了utf-8格式的了,使用utf-8读取,就能正确的读出文件。
总结编码
一、在Python文件顶部添加 `#encoding=utf-8`,只是设置当前Python文件支持中文的输入,并不能真正解决读取的文件的编码格式不支持的问题。 二、遇到读取的文件格式不支持的状况,正确的的作法仍是,查看文件真正的编码格式,在程序读取的文件的时候,设置正确的编码格式;或者修改文件的编码格式为咱们程序支持的格式。