用户工具

站点工具


gbk_乱码合集

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
gbk_乱码合集 [2023/08/31 11:27] MNBVC项目组gbk_乱码合集 [2023/08/31 14:41] (当前版本) MNBVC项目组
行 1: 行 1:
-出错文件地址: 20230101/aliyun.20230101.7.史书/113.txt +出错文件地址: **20230101/aliyun.20230101.7.史书/113.txt** 
-报错内容:/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+ 
 +链接: 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** 
  
 调试信息: 调试信息:
行 10: 行 14:
 </code> </code>
  
-初步判断是 -\x80 W  -\x9eX\xcb@---P\xcd\xf2\xf0[E这段数据导致的问题+ 
 +初步判断是字节数据 **-\x80 W  -\x9eX\xcb@---P\xcd\xf2\xf0[E** 这段数据\x80 导致的问题 
 + 
 +测试用的代码: 
 +<code python> 
 +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) 
 + 
 +</code> 
 + 
 + 
 +本文档在chrome浏览器中表现也是如此 
 +{{:pasted:20230831-142553.png}} 
 + 
 +利用PyIcu可以通过GBK编码格式解码出正确内容,但GB18030会报错 
 +<code> 
 +(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 
 +<UnicodeString: '\u3000\u3000,是谓之阙。《说文》:阙,门关也。《释名》:阙,阙也,在门两旁,中央阙然为道也。观,观也,于上€-w€ / 偞P -€ W  -瀀薂---P万餥E` \r\n'> 
 +</code>
  
gbk_乱码合集.1693452463.txt.gz · 最后更改: 2023/08/31 11:27 由 MNBVC项目组