Allt handlar om utf-8-kodning. I Erlang en lista med tecken, i ditt fall [240,159,152,130]
, är normalt inte kodade men är unicode-kodpunkterna. När du hämtade data fick du en binär som innehåller med utf-8 kodningsbytes av dina tecken. Exakt var denna kodning inträffade vet jag inte. Från erlang-skalet:
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]
Att hantera unicode i erlang är ganska enkelt, tecken i listor är vanligtvis unicode-kodpunkterna och kodas mycket sällan, medan lagring av dem i binärer innebär att du måste koda dem på något sätt, eftersom binärer bara är arrayer av byte. Standardkodningen är utf-8. I modulen unicode
det finns funktioner för att konvertera mellan unicode-listor och binärer.