¿Cómo codifica Facebook emoji en la API de json Graph?

¿Alguien sabe cómo Facebook codifica emoji con pares altamente sustituidos en Graph API?

Parejas bajas sustitutas parecen estar bien. Por ejemplo, ❤️ (HEAVY BLACK HEART, aunque es rojo en iOS / OSX, enlace a imagen si no puedes ver el emoji ) aparece como \u2764\ufe0f que parece coincidir con los códigos hexadecimales UTF-16 / ” Notación formal de Unicode “que se muestra aquí en iemoji.com .

Y de hecho, en Ruby al analizar la salida JSON de la API:

 ActiveSupport::JSON.decode('"\u2764\ufe0f"') 

usted correctamente obtiene:

 "❤️" 

Sin embargo, para elegir otro emoji, 💤 (SÍMBOLO DE DORMIR, enlace a la imagen aquí . Facebook devuelve \udbba\udf59 . Esto parece no corresponder con nada que pueda encontrar en ningún recurso Unicode, por ejemplo, este en iemoji.com .

Y cuando bash decodificar en Ruby usando el mismo método anterior:

 ActiveSupport::JSON.decode('"\udbba\udf59"') 

Yo obtengo:

 "💤" 

¿Alguna idea de lo que está pasando aquí?

Respondiendo a mi propia pregunta, aunque la mayor parte del crédito pertenece a @bobince por mostrarme el camino en los comentarios anteriores.

La respuesta es que Facebook codifica emoji usando la encoding “Google” como se ve en esta tabla Unicode .

He creado una gem ruby ​​llamada emojivert que se puede convertir de una encoding a otra, incluso de “Google” a “Unified”. Se basa en otro proyecto existente llamado rails-emoji .

Por lo tanto, el ejemplo anterior se solucionaría haciendo:

 string = ActiveSupport::JSON.decode('"\udbba\udf59"') > "💤" fixed = Emojivert.google_to_unified(string) > "💤" 
    Intereting Posts