我在使用条形码扫描仪将字符输入到Web界面时,遇到了字符编码问题。
如果条形码有一个符号,比如-(破折号/连字号/减号),它会给我正确的字符代码189,这在许多字符集中都是正确的。实际上,如果当我进行扫描时选择文本输入,则它将按预期输入-字符。但是,如果我截取全局文档的keypress或keyup事件并使用fromCharCode()函数自己构建字符串,而不是让浏览器处理它,则我会得到½字符,这当然是189代码的Unicode转换。
在事件本身中,keyCode和“which”显示为189,而keyIdentifier为“U + 00BD”。不幸的是,我真正需要的charCode值始终为0。
现在当然,我可以手动处理此转换,只需5秒钟即可。问题是,我不知道扫描仪可能得到的完整代码集,并且我担心未经处理的字符可能在未来几周或几个月内出现并带来一些麻烦。或者,我可以上传原始字符代码到服务器,并尝试在PHP中处理它。出于时间和响应性的原因,我更喜欢在客户端处理它。向不可见的文本输入发送虚假按键也可能有效,但那是一个非常丑陋的解决方法。
看起来应该有更好的方法来解决这个问题,并且我肯定错过了一些显而易见的东西。有人有什么想法吗?
which
和keyCode
都是系统相关且已被弃用。event.key
的值是多少? - Sheepy