破译公交车上“顺蛋踩”的乱码

  • 来源:电脑报
  • 关键字:破译,公交车,乱码
  • 发布时间:2023-09-08 12:54

  白二娃

  有这样一条短视频引起了我的兴趣,呼市119 路公交车显示出“顺蛋踩■□行荒?呐浜稀?”的乱码。作为程序员,你能破译出这条乱码的原文吗?

  产生这种乱码的原因是因为中文字符以4位16 进制编码形式存储,在存入液晶屏的过程中遗失了部分字符,通常是缺少前2 位编码,而剩下的字符仍然按4 位一组显示,这就导致所显示出的字符出现乱码。我们通过文字编码的知识其实是可以还原出原文的。

  首先搜索“汉字字符集编码查询”(https://www.qqxiuzi.cn/bianma/zifuji.php),在这里可以查询汉字的编码,也可以通过编码查询汉字。输入能够识别的“顺蛋踩”,获得3 个字的GB2312 字符“CBB3”“B5B0”“B2C8”(如图1)。

  那么原来正确的字符编码应该是“B3B5”“B0B2”。将“B3B5 B0B2”输入查询,按GB2312 编码反查,获得“车安”这两个字。

  将已知条件全部填入表格,获得确定的字符“车安谢配合”,图2 中黑色编码为确定,绿色为推测。

  猜测“安”后面的词组是“安全”,查询“全”的编码是“C8AB”,与“踩”编码中的C8 刚好一致。谢的词组有谢谢和感谢,已知谢字编码D0BB,看它旁边的编码不会是重复的谢字,所以应该是感谢。查询感的编码为“B8D0”,与行字的D0 刚好吻合,所以是“感谢XX 配合”。根据语义猜测“感谢您的配合”查询后填入表格,刚好合适。

  现在我们来寻找缺少的前2 位,XXCB是一个可以和车组成词组的字。在“GB2312汉字编码字符集对照表”中搜索各个XXC0与+B 的交叉点,最后在19 区找到“B3CB”乘字,比较符合题意。

  这时我们就差不多完成了破译工作,中间断句用的逗号,句子结尾试一下是惊叹号还是句号,最终获得了“乘车安全,感谢您的配合”。

  总之,Bug 产生的原因就是编码存储过程中遗失了开头的B3,导致指针位置有了一个字节的偏差。

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: