有这样一条短视频引起了我的兴趣,呼市119路公交车显示出“顺蛋踩■□行荒?呐浜稀?”的乱码。作为程序员,你能破译出这条乱码的原文吗(图1)?
产生这种乱码的原因是因为中文字符以4位16进制编码形式存储,当存入液晶屏器的过程中遗失了部分字符,通常是缺少前2位编码,而剩下的字符仍然按4位一组显示,这就导致所显示出的字符出现乱码。我们通过文字编码的知识其实是可以还原出原文的。
输入能够识别的“顺蛋踩”,获得3个字的GB2312字符“CBB3”“B5B0”“B2C8”(图2)。
那么原来正确的字符编码应该是“B3B5”“B0B2”。将“B3B5 B0B2”输入查询,按GB2312编码反查,获得“车安”这两个字(图3)。
猜测“安”后面的词组是“安全”,查询全的编码是“C8AB”,与踩编码中的C8刚好一致。谢的词组有谢谢和感谢,已知谢字编码D0BB,看它旁边的编码不会是重复的谢字,所以应该是感谢。查询感的编码为“B8D0”,与行字的D0刚好吻合,所以是“感谢XX配合”。根据语义猜测“感谢您的配合”查询后填入表格,刚好合适。
现在我们来寻找缺少的前2位,XXCB是一个可以和车组成词组的字。搜索“GB2312汉字编码字符集对照表”搜索各个XXC0与+B的交叉点,最后在19区找到“B3CB”乘字,比较符合题意(图5)。
这时我们就差不多完成了破译工作,中间断句用的逗号,句子结尾试一下是惊叹号还是句号,最终获得了“乘车安全,感谢您的配合。”
壹零社:用图文、视频记录科技互联网新鲜事、电商生活、云计算、ICT领域、消费电子,商业故事。《中国知网》每周全文收录;中国科技报刊100强;2021年微博百万粉丝俱乐部成员;2022年抖音优质科技内容创作者
竞博电竞首页