出错文件地址: **20230101/aliyun.20230101.7.史书/113.txt**
链接: https://pan.baidu.com/s/1YgIr7R-pvTdvF81qsihHxg?pwd=ctyq 提取码: ctyq
报错内容: **/Users/alan/temp_test/20230101/aliyun.20230101.7.史书/113.txt gb18030 转换到utf8失败, 'gb18030' codec can't decode byte 0x80 in position 21529: illegal multibyte sequence**
调试信息:
(Pdb) rl
b'\xa1\xa1\xa1\xa1\xa3\xac\xca\xc7\xce\xbd\xd6\xae\xe3\xda\xa1\xa3\xa1\xb6\xcb\xb5\xce\xc4\xa1\xb7\xa3\xba\xe3\xda\xa3\xac\xc3\xc5\xb9\xd8\xd2\xb2\xa1\xa3\xa1\xb6\xca\xcd\xc3\xfb\xa1\xb7\xa3\xba\xe3\xda\xa3\xac\xe3\xda\xd2\xb2\xa3\xac\xd4\xda\xc3\xc5\xc1\xbd\xc5\xd4\xa3\xac\xd6\xd0\xd1\xeb\xe3\xda\xc8\xbb\xce\xaa\xb5\xc0\xd2\xb2\xa1\xa3\xb9\xdb\xa3\xac\xb9\xdb\xd2\xb2\xa3\xac\xd3\xda\xc9\xcf\x80-w\x80 / \x82\xb4P -\x80 W -\x9eX\xcb@---P\xcd\xf2\xf0[E` \r\n'
(Pdb) rl.decode("gb18030", errors="ignore")
'\u3000\u3000,是谓之阙。《说文》:阙,门关也。《释名》:阙,阙也,在门两旁,中央阙然为道也。观,观也,于上-w / 偞P - W -瀀薂---P万餥E` \r\n'
初步判断是字节数据 **-\x80 W -\x9eX\xcb@---P\xcd\xf2\xf0[E** 这段数据\x80 导致的问题
测试用的代码:
file_path = "errors/113_gbk.txt"
line = True
count = 0
with open(file_path, "rb") as f:
while line:
try:
rl = f.readline()
#line = rl.decode("gb18030", errors="ignore")
count +=1
if count == 181:
import pdb;pdb.set_trace()
print(rl)
except Exception as e:
print(e)
本文档在chrome浏览器中表现也是如此
{{:pasted:20230831-142553.png}}
利用PyIcu可以通过GBK编码格式解码出正确内容,但GB18030会报错
(Pdb) rl
b'\xa1\xa1\xa1\xa1\xa3\xac\xca\xc7\xce\xbd\xd6\xae\xe3\xda\xa1\xa3\xa1\xb6\xcb\xb5\xce\xc4\xa1\xb7\xa3\xba\xe3\xda\xa3\xac\xc3\xc5\xb9\xd8\xd2\xb2\xa1\xa3\xa1\xb6\xca\xcd\xc3\xfb\xa1\xb7\xa3\xba\xe3\xda\xa3\xac\xe3\xda\xd2\xb2\xa3\xac\xd4\xda\xc3\xc5\xc1\xbd\xc5\xd4\xa3\xac\xd6\xd0\xd1\xeb\xe3\xda\xc8\xbb\xce\xaa\xb5\xc0\xd2\xb2\xa1\xa3\xb9\xdb\xa3\xac\xb9\xdb\xd2\xb2\xa3\xac\xd3\xda\xc9\xcf\x80-w\x80 / \x82\xb4P -\x80 W -\x9eX\xcb@---P\xcd\xf2\xf0[E` \r\n'
(Pdb) utf8 = UnicodeString(rl, "GB18030")
*** ValueError: 'gb18030' codec can't decode byte 0x80 in position 98: reason code 1 (the code point is illegal)
(Pdb) utf8 = UnicodeString(rl, "GBK")
(Pdb) utf8