Прежде всего, нужно знать, что вам нужно делать.Затем вы можете адаптировать свой код наилучшим способом.
Erlang представляет строки Unicode в виде списков кодовых точек.Кодовые точки Unicode являются целыми числами, а не байтами.Snce вы можете отправлять только байты по сети, такие вещи, как строки Unicode, должны быть закодированы в последовательности байтов отправляющей стороной и декодированы принимающей стороной.UTF-8 является наиболее часто используемой кодировкой для строк Unicode, и это то, чем является ваш двоичный файл, кодировкой UTF-8 строки Unicode, состоящей из кодовой точки 8482.
Что вы получаете из вызова io_lib:format
является строковым представлением erlang этой кодовой точки плюс символ новой строки.
Очень разумный способ отправки строк Unicode по сети - это их кодирование в UTF-8.Не используйте для этого io_lib:format
.unicode:characters_to_binary/1
- это функция, предназначенная для преобразования строк Unicode в двоичные файлы в кодировке UTF-8.
На принимающей стороне (и, возможно, даже лучше во всем приложении) вам придется решить, как вы будете обрабатывать строкилибо в закодированных двоичных файлах (или списках), либо в простых списках Unicode.Но по сети единственный выбор - использовать двоичные файлы (или iolists, которые, возможно, имеют глубокие списки байтов), и я уверен, что наиболее разумной кодировкой для вашего приложения будет UTF-8.