文章内容
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
黄兵个人博客原创。
评论列表