如何获取 Javascript 中字符的 Unicode 代码点?
How to get the Unicode code point for a character in Javascript?
我正在使用条码扫描仪读取我网站上的条码(该网站是在 OpenUI5 中制作的)。
扫描仪的工作方式类似于键盘,可以键入它读取的字符。在输入的结尾和开头,它使用一个特殊字符。这些字符对于每种类型的扫描仪都是不同的。
一些可能的字符是:
- █
- ▄
- –
- —
在我的代码中,我使用 if (oModelScanner.oData.scanning && oEvent.key == "\u2584")
来检查扫描仪的输入是否为 ▄。
有没有办法从\uHHHH 样式的字符中获取代码? (HHHH 为字符的十六进制代码)
我尝试了 charCodeAt 但是这个 returns 十进制代码。
他们使用 codePointAt examples 将我需要的代码转换为十进制代码,因此我需要将其反转。
var hex = "▄".charCodeAt(0).toString(16);
var result = "\u" + "0000".substring(0, 4 - hex.length) + hex;
Javascript 字符串有一个方法 codePointAt 可以为您提供代表 Unicode 点值的整数。如果您希望将整数格式化为四个十六进制数字序列(如 Nikolay Spasov 的响应),则需要使用该数字的 16 进制(十六进制)表示形式。
var hex = "▄".codePointAt(0).toString(16);
var result = "\u" + "0000".substring(0, 4 - hex.length) + hex;
然而,如果您输入的代码点整数与预期的代码点匹配,直接检查可能会更容易
oEvent.key.codePointAt(0) === '▄'.codePointAt(0);
请注意,“符号相等”实际上可能更棘手:一些符号由代理对定义(您可以将其视为定义为四个十六进制数字序列的两半的组合)。
出于这个原因,我建议使用专门的库。
中找到更多详细信息
如果你想打印一个字符的多个代码点,例如,一个表情符号,你可以这样做:
const facepalm = "♂️";
const codePoints = Array.from(facepalm)
.map((v) => v.codePointAt(0).toString(16))
.map((hex) => "\u{" + hex + "}");
console.log(codePoints);
["\u{1f926}", "\u{1f3fc}", "\u{200d}", "\u{2642}", "\u{fe0f}"]
如果您想了解 ♂️ 的组成部分和长度,请查看 this article。
我正在使用条码扫描仪读取我网站上的条码(该网站是在 OpenUI5 中制作的)。
扫描仪的工作方式类似于键盘,可以键入它读取的字符。在输入的结尾和开头,它使用一个特殊字符。这些字符对于每种类型的扫描仪都是不同的。
一些可能的字符是:
- █
- ▄
- –
- —
在我的代码中,我使用 if (oModelScanner.oData.scanning && oEvent.key == "\u2584")
来检查扫描仪的输入是否为 ▄。
有没有办法从\uHHHH 样式的字符中获取代码? (HHHH 为字符的十六进制代码)
我尝试了 charCodeAt 但是这个 returns 十进制代码。
他们使用 codePointAt examples 将我需要的代码转换为十进制代码,因此我需要将其反转。
var hex = "▄".charCodeAt(0).toString(16);
var result = "\u" + "0000".substring(0, 4 - hex.length) + hex;
Javascript 字符串有一个方法 codePointAt 可以为您提供代表 Unicode 点值的整数。如果您希望将整数格式化为四个十六进制数字序列(如 Nikolay Spasov 的响应),则需要使用该数字的 16 进制(十六进制)表示形式。
var hex = "▄".codePointAt(0).toString(16);
var result = "\u" + "0000".substring(0, 4 - hex.length) + hex;
然而,如果您输入的代码点整数与预期的代码点匹配,直接检查可能会更容易
oEvent.key.codePointAt(0) === '▄'.codePointAt(0);
请注意,“符号相等”实际上可能更棘手:一些符号由代理对定义(您可以将其视为定义为四个十六进制数字序列的两半的组合)。
出于这个原因,我建议使用专门的库。
中找到更多详细信息如果你想打印一个字符的多个代码点,例如,一个表情符号,你可以这样做:
const facepalm = "♂️";
const codePoints = Array.from(facepalm)
.map((v) => v.codePointAt(0).toString(16))
.map((hex) => "\u{" + hex + "}");
console.log(codePoints);
["\u{1f926}", "\u{1f3fc}", "\u{200d}", "\u{2642}", "\u{fe0f}"]
如果您想了解 ♂️ 的组成部分和长度,请查看 this article。