Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erlang emysql iPhone Emoji-Kodierungsproblem

Es dreht sich alles um die utf-8-Codierung. In Erlang eine Liste von Zeichen, in Ihrem Fall [240,159,152,130] , sind normalerweise nicht codiert, sondern die Unicode-Codepunkte. Als Sie die Daten abgerufen haben, haben Sie eine Binärdatei mit utf-8-Codierungsbytes Ihrer Zeichen erhalten. Wo genau diese Kodierung auftrat, weiß ich nicht. Aus der Erlang-Shell:

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]

Die Handhabung von Unicode in Erlang ist ziemlich einfach, Zeichen in Listen sind normalerweise die Unicode-Codepunkte und werden sehr selten codiert, während das Speichern in Binärdateien bedeutet, dass Sie sie auf irgendeine Weise codieren müssen, da Binärdateien nur Arrays von Bytes sind. Die Standardcodierung ist utf-8. Im Modul unicode Es gibt Funktionen zum Konvertieren zwischen Unicode-Listen und Binärdateien.