web-dev-qa-db-ja.com

JavaScriptで1つの絵文字をUnicodeコードポイント番号に変換する方法は?

これを変換する方法????これに1f600 in javascript

'????'.charCodeAt(0);  

これはユニコード55357を返しますが、????から1f600を取得する方法

6
Parth Gajjar

これをブラウザ側で変換するスクリプトを追加しました

function emojiUnicode (emoji) {
    var comp;
    if (emoji.length === 1) {
        comp = emoji.charCodeAt(0);
    }
    comp = (
        (emoji.charCodeAt(0) - 0xD800) * 0x400
      + (emoji.charCodeAt(1) - 0xDC00) + 0x10000
    );
    if (comp < 0) {
        comp = emoji.charCodeAt(0);
    }
    return comp.toString("16");
};
emojiUnicode("????"); # result "1f600"

https://www.npmjs.com/package/emoji-unicode に感謝

9
Parth Gajjar

これは私が使用するものです:

const toUni = function (str) {
  if (str.length < 4)
    return str.codePointAt(0).toString(16);
  return str.codePointAt(0).toString(16) + '-' + str.codePointAt(2).toString(16);
};
7
Vad

ここに別の方法があります。 ソース

 "????".codePointAt(0).toString(16)
2
Lim Sze Seong

双方向

let hex = "????".codePointAt(0).toString(16)
let Emo = String.fromCodePoint("0x"+hex);

console.log(hex, Emo);
2

お読みください このリンク

ここに関数があります:

function toUTF16(codePoint) {
var TEN_BITS = parseInt('1111111111', 2);
function u(codeUnit) {
  return '\\u'+codeUnit.toString(16).toUpperCase();
}

if (codePoint <= 0xFFFF) {
  return u(codePoint);
}
codePoint -= 0x10000;

// Shift right to get to most significant 10 bits
var leadSurrogate = 0xD800 + (codePoint >> 10);

// Mask to get least significant 10 bits
var tailSurrogate = 0xDC00 + (codePoint & TEN_BITS);

 return u(leadSurrogate) + u(tailSurrogate);
}
2
Mitul Gedeeya