EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

异体汉字成因及处理

异体汉字描述

整理文档过程中,部分从 PDF 文档中粘贴的中文文本字符并非通用编码的中文字符。

例如:

上述图片是 PDF 文本内容的截图,选中文本并复制后得到如下内容:

服务器推送

这个功能通常被称作“缓存推送”。主要的思想是:当【⼀】个客户端请求资源X,【⽽】服务器知道它很可能也需要资源Z的情况下,服务器可以在客户端发送请求前,主动将资源Z推送给客户端。这个功能帮助客户端将Z放进缓存以备将来之需。

服务器推送需要客户端显式的允许服务器提供该功能。但即使如此,客户端依然能【⾃】主选择是否需要中断该推送的流。如果不需要的话,客户端可以通过发送【⼀】个RST_STREAM帧来中【⽌】。

容易发现,内容中用中括号强调的字符应当为“一”“而”“自”“止”等常规编码的中文汉字。我们称被强调的这些字符为异形汉字

异形汉字的影响

  1. 在印刷过程中,异形汉字的字体与常规编码汉字明显不同。
  2. 部分浏览器、文本编辑器和 PDF 阅读器不支持异形汉字。
  3. 在文本检索过程中,异形汉字不与常规编码汉字匹配。例如“⾃主选择”并不匹配“自主选择”。

异形汉字的成因

笔者最常见的异形汉字成因是:在 Linux 系统中使用中文输入法(如“智能拼音”输入法)编辑中文文件,再移植到 Windows 或其他系统中。

众所周知,低版本的 Linux 系统只支持古早的中文编码,这些编码与新的编码不相容。

另一个原因是,部分异形汉字本身是日文或其他方块字语言的字符,而非汉字字符。但输入法的字库中只保存了该字符,而未保存原汉字。

例如【⼊】是日文字符,但在部分输入法中该字符与汉字“入”混用。

该视频系统解释了计算机字符编码:锟斤拷�⊠是怎样炼成的——中文显示“⼊”门指南【柴知道】

解决方案

在之前的文章中,笔者使用 [㑇-﨩] 在正则表达式中匹配一般编码中文。

用以下正则表达式可以匹配大多数不常见符号,包括上文提到的异形汉字。在中括号中添加其他符号可以将添加的符号从搜索结果中排除。

1
([^㑇-﨩\w\s\d +-<>,。*()、?|:“”!;`"=()\^\\…'$?{}\[\]!%@—;#·&~:《》【】‘’¥])