同样是字母“o”,为何识别不了

Bug图例
今天发现的最诡异的bug
上下两段的代码一模一样(这么缩进是为了方便同屏比对)
然而下一段的代码可以正常运行,上一段的无法使用
肉眼对比无果后,用Ctrl+F逐行比对,最后发现问题在第一个“onkeydown”的第一个字母“o”,如图,Ctrl+F搜索“on”时无法搜到图中所圈的地方。
转换这几个o的ASCII码,相同(经评论区大佬指正,这个是我的疏忽,当时复制错了)
使用编译器为vscode
复制到别的软件后再复制回来还是这样(发布问题后,我又从思否这里复制这段,再在编译器里尝试还是识别不了那个“o”)
关闭编译器重启还是这样
下附代码(“esc2”就是esc,当时为了区分两段代码加了数字)

<html><head><script>   
document.οnkeydοwn=function(event){   
var e = event || window.event  
if(e && e.keyCode==27){   
alert("按 esc2");   
}     
};    
</script></head><body></body></html>  
  
<html><head><script>  
document.onkeydown=function(event){  
var e = event || window.event  
if(e && e.keyCode==27){  
alert("按 esc2");  
}  
};  
</script></head><body></body></html>

(如图,我在这里Ctrl+F也是同样的结果,并且改完那个“o”代码就正常运行)
Bug.jpg

阅读 1.9k
2 个回答

他只是长得像 o ,但是他实际并不是,通过检查这两个的字符 code 就可以看到,一个是 959(希腊字母) ,一个是 111(拉丁文字母)
图片.png

  • UNICODE 码表

图片.png
图片.png

  • ASCII 码表

图片.png

你那第一个是希腊字母 ο (HTML 转义记作 &omicron;),不是英文字母 o

另外你咋转的 ASCII?ASCII 一共就 128 个字符,其余全都 \uXXXX 转义的。

要比也该是看 Unicode 编码,希腊字母 ο Unicode 是 &#959;,英文字母 o Unicode 是 &#111;

推荐问题