How to get the Unicode code point for a character in Javascript?

柔情痞子 提交于 2020-04-08 10:19:37

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!