UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 3: invalid start byte

1.问题描述:

        需要用到中文预料,所以下载了一篇txt文件小说,但是读取的时候就出现如标题所示的错误。

2.问题分析:

        通过查找可以知道这是字符编码的问题。网上找到的方法都是说读取该文件时使用“gbk”格式的编码就行。但是,不使用“utf-8”编码格式我总觉的会有问题。

        2.1 UTF-8和GBK:

  1. GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。
  2. UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8 节省空间。另外,如果是外国人访问你的GBK网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。
  3. GBK包含全部中文字符;

        2.2 UFT-8和GBK如何选择:

  1. 如果你主要做中文程序的开发,客户也主要是中国人的话就用GBK吧,因为UTF-8编码的中文使用了三个字节,用GBK节省了空间。
  2. 如果做英文网站开发,还是用utf-8吧,因为utf-8中英文只占一个字节。GBK中英文也是两个字节的,并且国外客户访问GBK要下载语言包。如果你的网站是中文的,但国外用户也不少,最好也用UTF-8的吧。

3.解决问题:

        3.1 选择GBK

        读取的时候选择使用该格式的编码就行了,网上绝大部分都是采用这个方法。就不详讲了。

        3.2 选择使用UTF-8

        只需要把该文件的格式转成UTF-8就行。我使用的方法如下:

        使用notepad打开需要转码的文件(txt文件本身也支持转码,另存为然后选择utf-8就可以了,如何txt文件内容过大,打开需要很久可以使用我这个方法。notepad打开360万多行的文件都蛮快的!!!),如下图:

        然后点击上图红色箭头所示的,注意保存!最后再次点开编码栏,就会出现如下图所示。再去运行程序就没有错误了!!!

发布了82 篇原创文章 · 获赞 126 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_31112205/article/details/103558420