1

二郎R15!

我有一个 UTF-8 编码的二进制文件。我需要将其解析为 unicode 字符串(列表)。有什么办法吗?

4

3 回答 3

6

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]
于 2013-08-09T14:40:21.430 回答
1

通过使用 unicode 翻译修饰符?

io:format("~ts", [Binary]).

这不会产生一个常规的 Erlang 字符串,但这似乎是你所关心的,不是吗?

于 2013-08-08T10:57:04.273 回答
1

unicode:characteres_to_list(二进制)。

例子:

> X = unicode:characters_to_binary("á").
  <<"á"/utf8>>
> unicode:characters_to_list(X).
  "á"
于 2015-05-07T02:20:36.320 回答