Всичко е свързано с utf-8 кодиране. В Erlang списък със знаци, във вашия случай [240,159,152,130]
, обикновено не са кодирани, но са кодовите точки на Unicode. Когато извлечете данните, получавате двоичен файл, съдържащ байтове за кодиране utf-8 от вашите знаци. Къде точно се е случило това кодиране не знам. От обвивката на 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]
Работата с unicode в erlang е доста проста, символите в списъците обикновено са кодовите точки на unicode и много рядко се кодират, докато съхраняването им в двоични файлове означава, че трябва да ги кодирате по някакъв начин, тъй като двоичните файлове са просто масиви от байтове. Кодирането по подразбиране е utf-8. В модула unicode
има функции за преобразуване между уникод списъци и двоични файлове.