文章内容

2021/4/4 11:28:48,作 者: 黄兵

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

最近在读取文件的时候,出现了如下错误:

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

出错代码如下:

@staticmethod
def read_asn_prefix(asn):
# 读取asn文件
read_asn_prefix_path = os.path.join(os.getcwd(), f'files\\{asn}.csv')
if os.path.exists(read_asn_prefix_path):
with open(read_asn_prefix_path, 'r') as csv_file:
temp_list = []
# 读取csv文件
csv_reader = csv.reader(csv_file)
# 读取第一行
next(csv_reader)
temp_list = [[row[0], row[1]] for row in csv_reader]
return temp_list
else:
return False

主要是这一行报错:

temp_list = [[row[0], row[1]] for row in csv_reader]

出现错误的原因:

默认使用gbk打开文件之后有些字符无法转换,出现转码错误。

解决方案:

使用utf-8打开文件,具体代码如下:

@staticmethod
def read_asn_prefix(asn):
# 读取asn文件
read_asn_prefix_path = os.path.join(os.getcwd(), f'files\\{asn}.csv')
if os.path.exists(read_asn_prefix_path):
with open(read_asn_prefix_path, 'r', encoding='utf-8') as csv_file:
# 读取csv文件
csv_reader = csv.reader(csv_file)
# 读取第一行
next(csv_reader)
temp_list = [[row[0], row[1]] for row in csv_reader]
return temp_list
else:
return False

问题解决。


参考资料:

1、UnicodeDecodeError:'gbk' codec can't decode byte 0x80 in position 0 illegal multibyte sequence


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - UnicodeDecodeError:'gbk' codec can't decode byte 0x93 in position 0 illegal multibyte sequence

分享到:

发表评论

评论列表