s4d代码运行报错记录|UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 5686: invalid conti
教程二:
读取ester1.tst.mdtm,报错如下:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 5686: invalid continuation byte
截图如下:
报错解决方法:
参考链接
在读文件方法参数后面加 encoding=’gbk’,example如下:
ref = Diar.read_mdtm(os.path.join(data_dir, 'seg', 'ester1.tst.mdtm'),encoding='gbk')
uem = Diar.read_uem(os.path.join(data_dir, 'seg', 'ester1.tst.uem'),encoding='gbk')
错误原因分析:
出现这种问题绝大部分情况是因为文件不是 UTF8 编码的(例如,可能是 GBK 编码的),而系统默认采用 UTF8 解码。解决方法是改为对应的解码方式。
极少数情况是因为文件损坏了或者和一部分非 UTF8 编码混在一起,可以修复文件或采用 replace 等方式解码。
参考链接
此处错误的原因:
mdtm 在解压或者传输过程中 文件损坏:
采用二进制单行读取输出的方法,输出报错的行数如下,发现文件名前后均多了一些字节字符,把这些多余的字符删除,此处的错误即消失:
读取代码如下:
f = open("ester1.tst.mdtm","rb") #二进制格式读文件
while True:
line = f.readline()
if not line:
break
else:
try:
#print(line.decode('utf8'))
line.decode('utf8')
#为了暴露出错误,最好此处不print
except:
print("=====")
print(str(line))