模糊字符 – 0和O,I和l傻傻分不清楚

模糊字符(Ambiguous characters)是指那些与某些数字相似的字符。当他们出现在随机生成的账号和密码中,许多人都分不太清楚。

最容易搞混的是大写的I和小写的l,在我们最常用的Arial和Calibri字体中这两个很难肉眼区分。类似的模糊字符还有:

  • B = 8
  • G = 6
  • I = 1 = l(小写L)
  • O = 0
  • Q = D
  • S = 5
  • Z = 2

如何解决这个问题呢?

在网站上显示模糊字符时,强烈建议选择一种能增强文本可读性的字体,这将有助于确保减少混淆。

多数等宽字体都是不错的选择,我个人比较喜欢Consolas,其实Tahoma 和 Lucida Console也不错。下面就是这三种字体的显示效果

Consolas: 0OB8i1lIb6S5Z2

Tahoma: 0OB8i1lIb6S5Z2

Lucida Console: 0OB8i1lIb6S5Z2

Consolas是Windows里记事本的标准字体,因此当你分不清字符串中的模糊字符时,你可以打开记事本,把字符串复制黏贴过去。

也可以黏贴到下面这个文本栏,它会自动变成放大的consolas字体。

在编程时我们通常使用下面两种方法解决模糊字符的问题,在许多应用的设置里也有相关选项。

1. 处理模糊性

如果您担心O0、1Il、8B或其他任何类似字符会搞混,那就将它们视为相同字符!

这就是Base32所做的。它将标准化为上述字符之一(比如数字018),并省略那些太相似的字符(在这种情况下是OIlB)。
当您从用户那里接收输入时,将被省略的字符映射到规范字符(例如,用数字零替换字母O)。

2. 消除所有模糊性

Base32仍然留下了可能被误认为模糊的字符,你也可以删除所有可能被视为模糊的字符(例如0O1Il8B)。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注