with open(“log.txt”, “r”) as f:
#一次性读全部内容
data = f.read()
print(data)

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
Input In [3], in <cell line: 4>()
      2 import os
      4 with open("table/clearance-log.txt", "r") as f:
----> 5     data = f.read()
      6     print(data)

UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 4: illegal multibyte sequence

错误的意思是:Unicode的解码(Decode)出现错误(Error)了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can’t decode )。“illegal multibyte sequence”意思是非法的多字节序列,即没法(解码)了。

此种错误,可能是要处理的字符串本身不是gbk编码,但是却以gbk编码去解码 。比如,字符串本身是utf-8的,但是却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错。

通过查阅资料,有提出在读取文本的时候加入参数‘b’,不会提示错误,通过输出读取的数据显示。

with open(“table/clearance-log.txt”, ‘r’, encoding=’UTF-8′) as f:

 

如果您尝试打开采用 UTF-8 编码的 CSV 文件但仍然出现错误,则可能有几个不同的原因。

一种可能是 CSV 文件包含导致错误的非 UTF-8 字符或字节序列。 在这种情况下,您可能需要尝试使用不同的编码打开文件,看看是否能解决问题。

另一种可能性是错误是由您尝试打开文件的方式引起的。 这里有一些尝试:

1、确保在打开文件时将编码指定为“utf-8”。 例如:

import csv

with open(‘myfile.csv’, ‘r’, encoding=’utf-8′) as f:
reader = csv.reader(f)
# Process the CSV data here

2、尝试使用 utf-8-sig 编码而不是 utf-8。 这是 UTF-8 的变体,在文件的开头包含字节顺序标记 (BOM)。 某些程序可能会编写带有 BOM 的 CSV 文件,如果是这种情况,使用 utf-8-sig 会有所帮助。

import csv

with open(‘myfile.csv’, ‘r’, encoding=’utf-8-sig’) as f:
reader = csv.reader(f)
# Process the CSV data here

3、如果您使用的是 3.6 之前的 Python 版本,您可能需要使用 io 模块打开具有正确编码的文件。 例如:

import csv
import io

with io.open(‘myfile.csv’, ‘r’, encoding=’utf-8′) as f:
reader = csv.reader(f)
# Process the CSV data here

作者 admin

百度广告效果展示