Foraltria 发表于 2021-3-14 14:43:31

quz,出现UnicodeDecodeError:“ gbk”编解码器无法解码位置37的字节0xac:非法的...

比如,代码如下,是小甲鱼课后习题的答案:
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

    for line1 in f1:
      line2 = f2.readline()
      count += 1
      if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
      print('第 %d 行不一样' % each)

比较的歌词是一样的,如下:
Fou ki ra hyear presia reen
请聆听我最真挚的呼唤
Was zweie ra na stel zuieg manaf
我无意夺取您的生命和力量
Ma zweie ra irs manaf chyet oz omnis
因生命的存在乃万物的选择
en na cyurio re chyet
即使没有被命运选中
Was touwaka gaya presia accrroad ieeya
我仍恳求您给予世间以希望

然后就报错了:
Traceback (most recent call last):
File "E:/python练习/3.10/1_test2.py", line 20, in <module>
    differ = file_compare(file1, file2)
File "E:/python练习/3.10/1_test2.py", line 7, in file_compare
    for line1 in f1:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 37: illegal multibyte sequence

想求助大佬们有没有什么解决办法

逃兵 发表于 2021-3-14 14:54:13

def file_compare(file1, file2):
    f1 = open(file1,encoding='utf-8')
    f2 = open(file2,encoding='utf-8')
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

    for line1 in f1:
      line2 = f2.readline()
      count += 1
      if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
      print('第 %d 行不一样' % each)
页: [1]
查看完整版本: quz,出现UnicodeDecodeError:“ gbk”编解码器无法解码位置37的字节0xac:非法的...