【发布时间】:2013-08-08 09:08:21
【问题描述】:
二郎 R15!
我有一个 UTF-8 编码的二进制文件。我需要将其解析为 unicode 字符串(列表)。有什么办法吗?
【问题讨论】:
-
unicode 库仍可用于 R15!
二郎 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).
"á"
【讨论】: