用户工具

站点工具


单个字节丢失导致的gbk转换编码出错的研究

差别

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

到此差别页面的链接

后一修订版
前一修订版
单个字节丢失导致的gbk转换编码出错的研究 [2023/12/05 15:20] – 创建 MNBVC项目组单个字节丢失导致的gbk转换编码出错的研究 [2023/12/05 15:21] (当前版本) MNBVC项目组
行 3: 行 3:
 ==== 案例1: ==== ==== 案例1: ====
  
-以 20230101/aliyun.20230101.8.武侠小说/1184.txt 第563行为例:+''以 20230101/aliyun.20230101.8.武侠小说/1184.txt 第563行为例''
  
 如果我们用Python对它进行正常的编码转换通常都会遇到如下错误: //UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 46: illegal multibyte sequence//, 这正是由于文本中单个字节丢失导致的。 如果我们用Python对它进行正常的编码转换通常都会遇到如下错误: //UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 46: illegal multibyte sequence//, 这正是由于文本中单个字节丢失导致的。
行 9: 行 9:
 **转换出错原因(GBK编码的文本中丢失单个字节导致):** **转换出错原因(GBK编码的文本中丢失单个字节导致):**
  
-在GBK编码的定义中,00-7F是单字节,和ASCII保持一致,此范围内有96个文字和32个控制符号。从81-FE都是双字节编码,换句话说,所有的中文汉字在GBK编码中都以双字节形式呈现。+在GBK编码的定义中,00-7F是单字节,和ASCII保持一致,此范围内有96个文字和32个控制符号。从81-FE都是双字节编码,换句话说,几乎所有的中文汉字在GBK编码中都以双字节形式呈现。
  
 例如汉字 `中国人` 的GBK字节编码为 ''\xd6\xd0\xb9\xfa\xc8\xcb'', 其中 \xd6\xd0 是 "中", \xb9\xfa 是 "国", xc8\xcb 是 "人",我们可以用Python对 ''\xd6\xd0\xb9\xfa\xc8\xcb'' 进行decode得到正确的汉字。 例如汉字 `中国人` 的GBK字节编码为 ''\xd6\xd0\xb9\xfa\xc8\xcb'', 其中 \xd6\xd0 是 "中", \xb9\xfa 是 "国", xc8\xcb 是 "人",我们可以用Python对 ''\xd6\xd0\xb9\xfa\xc8\xcb'' 进行decode得到正确的汉字。
单个字节丢失导致的gbk转换编码出错的研究.1701760801.txt.gz · 最后更改: 2023/12/05 15:20 由 MNBVC项目组