二郎R15!
我有一个 UTF-8 编码的二进制文件。我需要将其解析为 unicode 字符串(列表)。有什么办法吗?
unicode 库将为您提供帮助。
Bin = <<"Hello">>.
unicode:characters_to_list(Bin, utf8).
在 Erlang 中避免编码问题的最佳实践:
始终将 utf8 数据作为二进制文件处理,将 Unicode 数据作为 Erlang 列表处理
这种最佳实践将使您的生活更轻松。遵循这条规则非常方便,因为它使可用的 Erlang 模块用于 unicode 处理的使用变得顺畅。
在调试编码问题时,这里有一些更好的 shell 工具:
强制 Erlang shell 打印字符(数字列表):
io:put_chars([229,228,246]).
åäö
注意:这将使用 shell 编码打印,因此请确保您的 shell 具有您想要查看结果的编码。
强制 Elrang shell 打印数字:
io:format("~w~n", ["åäö"]).
[229,228,246]
通过使用 unicode 翻译修饰符?
io:format("~ts", [Binary]).
这不会产生一个常规的 Erlang 字符串,但这似乎是你所关心的,不是吗?
unicode:characteres_to_list(二进制)。
例子:
> X = unicode:characters_to_binary("á").
<<"á"/utf8>>
> unicode:characters_to_list(X).
"á"