Parth Gajjar
Parth Gajjar

Reputation: 1424

How to convert one emoji character to Unicode codepoint number in JavaScript?

how to convert this 😀 into this 1f600 in javascript

'😀'.charCodeAt(0);  

this will return unicode 55357 but how to get 1f600 from 😀

Upvotes: 27

Views: 53252

Answers (8)

UniParse
UniParse

Reputation: 31

const 
  getUnicodeHex = char => char.codePointAt(0).toString(16),    
  getEmoji = unicodeHex => String.fromCodePoint(unicodeHex)

console.log(
  getUnicodeHex('😀'),  // 1f600
  getEmoji(0x1f600)     // 😀
)

Upvotes: 0

Kolibril
Kolibril

Reputation: 1423

Emojis like 👩‍⚕️ have two parts: 👩 +⚕️.
Here is how to get their code:

emoji = "👩‍⚕️" // corresponds to  1f469-200d-2695-fe0f
code1 = emoji.codePointAt(0).toString(16) // gives only 1f469
code2 = [...emoji].map(e => e.codePointAt(0).toString(16)).join(`-`) // gives correctly 1f469-200d-2695-fe0f
console.log(code1)
console.log(code2)

Upvotes: 4

Pravin Kottawar
Pravin Kottawar

Reputation: 81

Best answer in my view is to use node-emoji package.

https://www.npmjs.com/package/node-emoji

Here are steps.

  1. do npm i node-emoji

    var emoji = require('node-emoji');
    var convertEmoji = function(data){
    if(emoji.hasEmoji(data)){
        return emoji.unemojify(data);
      }
      else{
         return data;
      }
    }
    

Upvotes: 0

Kamil Kiełczewski
Kamil Kiełczewski

Reputation: 92347

Two way

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

console.log(hex, emo);

Upvotes: 44

Lim Sze Seong
Lim Sze Seong

Reputation: 71

Here is another way. Source

 "😀".codePointAt(0).toString(16)

Upvotes: 3

Vad
Vad

Reputation: 4099

This is what I use:

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);
};

Upvotes: 12

Parth Gajjar
Parth Gajjar

Reputation: 1424

Added script to convert this on browser side

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"

thanks to https://www.npmjs.com/package/emoji-unicode

Upvotes: 19

Mitul Gedeeya
Mitul Gedeeya

Reputation: 896

Please Read This Link.

Here is the function :

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);
}

Upvotes: 5

Related Questions