Javascript - Convertendo Emoji em HTML Entity

Transforme emojis para HTML Entities e resolva problemas de codificação em projetos ISO-8859-1! Aprenda a converter emojis em representações HTML para garantir que eles sejam exibidos corretamente, mesmo em projetos que não suportam Unicode. Mantenha seus projetos mágicos e livres de erros de emoji!

Javascript - Convertendo Emoji em HTML Entity

Olá meus Unicórnios! 🦄✨

Se você utiliza ISO-8859-1 em seu Projeto, já deve ter passado por problemas ao inserir Emojis, onde no lugar no Emoji aparece apenas um "?".

Isto ocorre porque o ISO-8859-1 não suporta codificação de Emojis, os Emojis pertencem ao conjunto de Caracteres Unicode (UTF-8).

Podemos simplesmente mudar o Projeto para UTF-8, porem, isto é uma ação árdua e que nem sempre é possível.

Então iremos utilizar uma forma mais simples, iremos converter o Emoji em HTML Entity.

Isto ira transformar este Emoji:

👦

Em:

👦

Que é a representação do Emoji em HTML Entity.

Este texto estranho, ao ser inserido no html, cria o Emoji!

Para inserir os Emojis, iremos utilizar o repositório "missive/emoji-mart":

GitHub - missive/emoji-mart: 🏪 One component to pick them all
🏪 One component to pick them all. Contribute to missive/emoji-mart development by creating an account on GitHub.

Iremos configurar o evento "onEmojiSelect" para receber o "unified" dos emojis clicando:

var ObjPickerOptions = {
onEmojiSelect: function(Emoji)
{
  
  console.log(Emoji.native);
  console.log(Emoji.unified);

}
};
var ObjPicker = new EmojiMart.Picker(ObjPickerOptions);
document.body.appendChild(ObjPicker);

Quando for clicado em um dos emojis, iremos receber:

Neste caso, o "unified" é deste Emoji é:

1f606

Mas cuidado, em alguns emojis, pode ter mais de uma cadeira de caracteres:

1f9cf-200d-2642-fe0f

Para exibir este Emoji no site, precisamos adicionar "&#x" antes, e ";" depois de cada parte do Emoji.

No caso acima, ficaria:

🧏‍♂️

Agora iremos criar uma função, no PHP, para transformar este texto no Emoji:

<?
$StringDoEmoji	= "1f9cf-200d-2642-fe0f";

$HexValues      = explode("-", $StringDoEmoji);
$Entities       = array_map(function($Hex) {
	
	return "&#x" . $Hex . ";";

}, $HexValues);

echo implode("", $Entities);
?>

Por hoje é só, meus unicórnios! 🦄✨

Que a magia do arco-íris continue brilhando em suas vidas! Até mais! 🌈🌟