问题
I'm using a barcode scanner to read a barcode on my website (the website is made in OpenUI5).
The scanner works like a keyboard that types the characters it reads. At the end and the beginning of the typing it uses a special character. These characters are different for every type of scanner.
Some possible characters are:
- █
- ▄
- –
- —
In my code I use if (oModelScanner.oData.scanning && oEvent.key == "\u2584")
to check if the input from the scanner is ▄.
Is there any way to get the code from that character in the \uHHHH style? (with the HHHH being the hexadecimal code for the character)
I tried the charCodeAt but this returns the decimal code.
With the codePointAt examples they make the code I need into a decimal code so I need a reverse of this.
回答1:
Javascript strings have a method codePointAt which gives you the integer value of a given symbol in base 10, you need then to convert your integer in base 16 (hexadecimal) if you wish to format the integer into a four hexadecimal digits sequence (as in the response of Nikolay Spasov).
var hex = "▄".codePointAt(0).toString(16);
var result = "\\u" + "0000".substring(0, 4 - hex.length) + hex;
However it would probably be easier for you to check directly if you key code point integer match the expected code point
oEvent.key.codePointAt(0) === '▄'.codePointAt(0);
Note that "symbol equality" can actually be trickier: some symbols are defined by surrogate pairs (you can see it as the combination of two halves defined as four hexadecimal digits sequence).
For this reason I would recommend to use a specialized library.
you'll find more details in the very relevant article by Mathias Bynens
回答2:
var hex = "▄".charCodeAt(0).toString(16);
var result = "\\u" + "0000".substring(0, 4 - hex.length) + hex;
回答3:
If you want to print the multiple code points of a character, e.g., an emoji, you can do this:
const facepalm = '🤦🏼♂️';
const codePoints = Array.from(facepalm)
.map((v) => v.codePointAt(0).toString(16))
.map((hex) => "\\u" + "0000".substring(0, 4 - hex.length) + hex);
console.log(codePoints);
["\u1f926", "\u1f3fc", "\u200d", "\u2642", "\ufe0f"]
If you are wondering about the components and the length of 🤦🏼♂️, check out this article.
来源:https://stackoverflow.com/questions/48009201/how-to-get-the-unicode-code-point-for-a-character-in-javascript