Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème d'encodage Erlang emysql iPhone Emoji

Tout tourne autour de l'encodage utf-8. En Erlang une liste de caractères, dans votre cas [240,159,152,130] , ne sont normalement pas codés mais sont les points de code Unicode. Lorsque vous avez récupéré les données, vous avez obtenu un fichier binaire contenant les octets d'encodage utf-8 de vos caractères. Je ne sais pas exactement où cet encodage s'est produit. Depuis le shell erlang :

10> Bin = <<195,176,194,159,194,152,194,130>>.   
<<195,176,194,159,194,152,194,130>>
11> <<M/utf8,N/utf8,O/utf8,P/utf8,R/binary>> = Bin.
<<195,176,194,159,194,152,194,130>>
12> [M,N,O,P].
[240,159,152,130]

La gestion de l'unicode dans erlang est assez simple, les caractères dans les listes sont généralement les points de code unicode et sont très rarement encodés, tandis que les stocker dans des binaires signifie que vous devez les encoder d'une manière ou d'une autre, car les binaires ne sont que des tableaux d'octets. L'encodage par défaut est utf-8. Dans le module unicode il existe des fonctions de conversion entre les listes Unicode et les binaires.