Digamos que tengo una cadena como tal:
var text = "Hi 😂😂";Quiero almacenar este texto en una base de datos y deseo convertir los emoji a Unicode.
Mi solución actual es convertir la cadena en una matriz. Luego convierta cada carácter a Unicode.
function toUnicode(text){ var arr = Array.from(text); var unicodeArr = []; for (let i = 0; i < arr.length; i++) { var unicode = arr[i].codePointAt(0).toString(16); unicodeArr.push(unicode); } return JSON.stringify(unicodeArr); }Aquí está el resultado cuando ejecuto el código:
var text = "Hi 😂😂"; var unicodeArr = toUnicode(text); console.log(unicodeArr); //["48","69","20","1f602","1f602"]El único problema es que no estoy seguro de cómo volver a convertir esto en una cadena completa.
¿Existe una solución mucho más fácil para almacenar este var text = "Hi 😂😂"; en una base de datos?
Puede convertir a base64 , que es independiente de la plataforma:
var text = "Hi 😂😂"; const b64 = btoa(unescape(encodeURIComponent(text))); const txt = decodeURIComponent(escape(atob(b64))); console.log(b64); console.log(txt);Modifiqué su función "toUnicode" para devolver una matriz de números y no una matriz jsonificada de number.toString, por lo que no tuve que analizarlo todo nuevamente para descomprimirlo. Prueba esto:
function toUnicode(text){ return Array.from(text).map(char => char.codePointAt(0)); } function fromUnicode(unicode) { return unicode.map(num => String.fromCodePoint(num)).join(""); } var text = "Hi 😂😂"; var unicodeArr = toUnicode(text); var backToString = fromUnicode(unicodeArr); console.log(text, unicodeArr, backToString);