bud_pr_cc
bud_pr_cc
两个字符串有区别,它们在计算机看来是完全不同的。
bud_pr_cc(注意:pr和_之间有一个零宽空格,即U+200B)bud_pr_cc(标准的,没有额外字符)
关键区别:第一个字符串bud_pr_cc在pr和_之间包含了一个不可见的零宽空格字符(Unicode:U+200B)。这个字符在屏幕上不显示,也不占用可见空间,但它是一个真实存在的、独立的字符。
验证方法:
- 长度不同:第一个字符串的长度比第二个多1。
- 编码不同:如果查看它们的十六进制或Unicode编码,第一个在
pr(70 72)之后会多出E2 80 8B(这是UTF-8编码的零宽空格),然后才是_(5F)。第二个则是连续的70 72 5F。
结论:虽然肉眼看起来一样,但在字符串比较(如==操作)、哈希计算、数据库查询等任何精确匹配的场景中,这两个字符串不会相等。这种差异通常是由于从特定文档(如PDF、网页、富文本编辑器)复制粘贴时无意中引入了不可见字符导致的。
如何检查/修复:
- 在代码中,可以遍历字符串打印每个字符的Unicode码点来定位。
- 使用支持显示不可见字符的文本编辑器(如VS Code开启“渲染空白字符”)。
- 清除格式后重新输入,或使用正则表达式移除所有
\u200B等零宽字符。