如何在Javascript中获取字符的Unicode代码点?

问题描述 投票:2回答:2

我正在使用条形码扫描仪读取我网站上的条形码(该网站是在OpenUI5中制作的)。

扫描仪的工作方式类似于键入其所读取字符的键盘。在键入的结尾和开头,它使用特殊字符。这些字符对于每种类型的扫描仪都是不同的。

一些可能的角色是:

在我的代码中,我使用if (oModelScanner.oData.scanning && oEvent.key == "\u2584")检查扫描仪的输入是否为。

有没有办法从\ uHHHH样式中获取该字符的代码? (HHHH是角色的十六进制代码)

我尝试了charCodeAt,但这会返回十进制代码。

使用codePointAt examples,他们将我需要的代码变成十进制代码,所以我需要反过来。

javascript unicode character-encoding non-ascii-characters
2个回答
6
投票

Javascript字符串有一个方法codePointAt,它为您提供基数为10的给定符号的整数值,如果您希望将整数格式化为四个十六进制数字序列,则需要转换基数为16(十六进制)的整数(如尼古拉斯帕索夫的回应)。

var hex = "▄".codePointAt(0).toString(16);
var result = "\\u" + "0000".substring(0, 4 - hex.length) + hex;

但是,如果关键代码点整数与预期代码点匹配,则可能更容易直接检查

oEvent.key.codePointAt(0) === '▄'.codePointAt(0);

请注意,“符号相等”实际上可能更棘手:某些符号由代理对定义(您可以将其视为定义为四个十六进制数字序列的两半的组合)。

出于这个原因,我建议使用专门的库。

你会在非常relevant article by Mathias Bynens找到更多的细节


1
投票
var hex = "▄".charCodeAt(0).toString(16);
var result = "\\u" + "0000".substring(0, 4 - hex.length) + hex;
© www.soinside.com 2019 - 2024. All rights reserved.