当我从 UI 复制 # 符号时,ASCII 值不同

ASCII value is different when I copy the # symbol from UI

所以我有一个需要用户输入包含两个井号 (##) 的表单
例如,如果用户输入“ABC##1”,则有效

但是,它仅在用户通过键盘输入时有效,
在用户尝试从 UI 页面,然后粘贴到输入字段。

UI 有几行名称,用户可以根据需要复制,在这种情况下,我从 UI 复制 RCP##1,然后将其粘贴到输入框中,那么它没有通过验证。

更新:
我尝试通过检查“#”ascii 值进行调试,如果我手动输入“#”,acsii 值为 35,这很好。
但是如果我从 UI 复制一个“#”,它会以某种方式显示“#”的长度为 2,并且它的 acsii 值为 8203 和 35 这是我用来检查 ascii 值的代码:

let string = "​#"; // this pound key is copied from the UI page
console.log('length',string.length)
for (var i = 0; i < string.length; i++) {
  console.log(string.charCodeAt(i));
}
// the output is 
length2
8203
35

有人知道是什么导致了这种奇怪的行为吗?

UI 没有使用 ASCII。 ASCII 是一种过时的编码; Unicode 自 1990 年以来一直存在。大多数合理的应用程序将使用某种形式的 Unicode。您的程序使用的是 Unicode,而不是 ASCII。

你在那里(十六进制)是 200B 后跟 0023,即 zero-width space 后跟数字符号。您复制了两个字符,而不是一个——可以理解,因为两个字符之一根本不占用宽度。

一般来说,从网页剪切和粘贴时应谨慎处理。在这种情况下,有些布局字符您可能不想要。