Javascript:非 unicode 字符代码到 unicode 字符
Javascript: Non-unicode char code to unicode character?
我在使用用于向 Web 界面输入字符的条形码扫描仪时遇到了字符代码问题。
如果条形码有一个符号,例如 - (破折号/连字符/减号(,它会给我字符代码 189,这在许多字符集中都是正确的。事实上,如果我在扫描时选择了文本输入,它将按预期输入 - 字符。但是,如果我从全局文档中截获按键或 keyup 事件并使用 fromCharCode(( 函数自己构建字符串,而不是让浏览器处理它,我会得到 1/2 字符,这当然是 189 代码的 unicode 转换。
在事件本身中,keyCode 和 "which" 都显示为 189,而 keyIdentifier 显示为 "U+00BD"。不幸的是,我真正需要的字符代码值始终为 0。
现在当然,我现在可以在大约 5 秒内手动处理此转换。问题是我不知道我可能从扫描仪获得的全套代码,我担心一个未处理的角色在未来几周或几个月内出现并令人头疼。或者,我可以将原始字符代码上传到服务器并尝试在 PHP 中处理它。不过,出于时间和响应能力的原因,我更愿意在客户端上处理它。将假按键发送到不可见的文本输入也可能有效,但这是一个非常黑客的解决方法。
似乎应该有更好的方法来做到这一点,我必须错过一些明显的东西。有人有什么想法吗?
如果您通过获取键码来拦截键盘处理并将它们解释为带有 fromCharCode
的字符,则会得到错误的结果,因为键代码只是标识按键,而不是字符。与按键关联的字符取决于键盘驱动程序。
因此,拦截例程需要知道键盘键分配。您可以使用常见的 Windows 键代码作为起点,但随后您的软件将依赖于系统。
您可以使用 charCodeAt((;
var str = "HELLO WORLD";
var n = str.charCodeAt(0); //returns 72, the unicode value of H
参考:http://www.w3schools.com/jsref/jsref_charCodeAt.asp
应使用 keypress
事件来获取可靠的字符信息。所有浏览器都将字符代码存储在事件的 which
属性中。除 IE8 及更低版本外,它们将字符代码存储在 keyCode
属性中。
因此,要为给定的keypress
事件获取正确的字符代码,请使用以下命令:
document.addEventListener('keypress', function (event) {
// Get the proper character code
var charCode = (typeof event.which === 'number') ? event.which : event.keyCode;
// Do stuff
});
您可以通过打开一个新选项卡,将其指向about:blank
并在开发人员工具控制台中输入以下内容来轻松测试结果:
document.addEventListener('keypress', function (event) {
// Get the proper character code
var charCode = (typeof event.which === 'number') ? event.which : event.keyCode;
console.log('charCode = ' + charCode);
console.log('fromCharCode returns ' + String.fromCharCode(charCode));
});
键入短划线时的输出:
charCode = 45
fromCharCode returns -
将此与观察keyup
事件进行比较。如果要更改上面的示例以侦听 keyup
事件,则短划线的输出将为:
charCode = 189
fromCharCode returns ½
这是你可以使用的东西吗?如果您想阅读更多有关使用键盘事件的恐怖信息,这是一篇关于该主题的精彩文章。
- 无法呈现js unicode字符“u1F310”
- Unicode字符未在HTML5画布中正确呈现
- jquery textcomplete无法使用Unicode字符,并且缺少空格
- JavaScript Unicode Regex - 字符类中的顺序范围
- 在 Javascript 中显示 unicode 字符(表情符号)
- 请求返回 unicode 替换字符
- 将文本和html unicode字符添加到textarea元素中
- 用unicode字符提取字符串中的单词
- 如何替换不可打印的unicode字符(Javascript)
- PHP:如何用unicode字符将文件写入磁盘
- 替换不包括 unicode 的非数字字符
- JavaScript 转到带有 Unicode 字符的 URL
- 为什么这个 unicode 字符的警报不成功
- 如何在包含 Unicode 字符 'u00A0' 的表中包装单词
- Mozilla Builder 编辑器取消转义 Unicode 字符,并发 w. AMO 上传失败
- 正则表达式匹配所有单词,包括标点符号和 unicode 字符.没有空格
- 正则表达式与专业 unicode 字符不匹配
- 使用带有 unicode 字符的 ng-pattern (Angular.JS) 的不良结果
- 删除不受支持的 unicode 字符,否则显示为正方形
- Javascript:非 unicode 字符代码到 unicode 字符