Javascript:非 unicode 字符代码到 unicode 字符?

标签 javascript unicode character-encoding keypress keycode

我在使用条形码扫描仪向网络界面输入字符时遇到字符代码问题。

如果条形码有诸如 -(破折号/连字符/减号)之类的符号,它会给出字符代码 189,这在许多字符集中都是正确的。事实上,如果我在进行扫描时选择了文本输入,它将按预期输入 - 字符。但是,如果我从全局文档中拦截 keypress 或 keyup 事件并使用 fromCharCode() 函数自己构建字符串,而不是让浏览器处理它,我会得到 ½ 字符,这当然是 189 的 unicode 转换代码。

在事件本身中,keyCode 和“which”都显示为 189,而 keyIdentifier 是“U+00BD”。不幸的是,我真正需要的 charCode 值始终为 0。

现在我当然可以在大约 5 秒内手动处理此转换。问题是我不知道我可能从扫描仪获得的完整代码集,而且我担心未处理的字符会在数周或数月后出现并让我头疼。或者,我可以将原始字符代码上传到服务器并尝试用 PHP 处理它。不过,出于时间和响应能力的原因,我更愿意在客户端处理它。将假按键发送到不可见的文本输入可能也可行,但这是一个非常棘手的解决方法。

似乎应该有更好的方法来做到这一点,而且我必须遗漏一些明显的东西。有人有什么想法吗?

最佳答案

如果您通过获取键码并将它们解释为带有 fromCharCode 的字符来拦截键盘处理,您会得到错误的结果,因为键码只是识别按键,而不是字符。与按键关联的字符取决于键盘驱动程序。

因此拦截例程需要知道键盘按键分配。您可以使用常见的 Windows keycodes作为起点,但随后您的软件将依赖于系统。

关于Javascript:非 unicode 字符代码到 unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278037/

相关文章:

javascript - FPDF 将图像放入 CELL 时出现奇怪的错误

unicode - 圆柱数据库是否有 Unicode 字符?

mysql - 为什么 mysql 4 不遵守 --character_set_results 和 --default-character-set 命令参数?

ruby - 将不间断空格转换为 Ruby 中的空格

java - 没有字符集的 Jetty 响应

mysql - Rails 迁移突然看似随机地创建具有不同字符集的表

Javascript 创建多个链接?

javascript - 将 ejs 片段转换为 jade

javascript - 为什么此 contentscript 在 firefox 附加组件中运行多次?

ASP.NET 和 Ajax : query string parameters using ISO-8859-1 encoding