Unicode字符串的Erlang术语

Ign*_*nas 3 printing string unicode erlang

我有一个由某些函数生成的元组列表,看起来像:

[{"a","?"}, {"?","a"}, {"a","o"}, {"o","e"}]

但是当我打印它时,我在终端中看到了:

[{"a",[261]}, {[261],"a"}, {"a","o"}, {"o","e"}]

我通常用以下命令打印它:

io:format("~p~n", [functionThatGeneratesListOfTuples()]),

到目前为止,我发现~ts在打印Unicode字符串时需要使用它,因此我尝试了以下操作:

Pairs = functionThatGeneratesListOfTuples(), PairsStr = io_lib:format("~p", [Pairs]), io:format("~ts~n", [PairsStr]),

是否有可能实现适当地表示Unicode字符串?

Ric*_*rdC 5

用于检测列表-的-整数作为字符串默认情况下只承认Latin-1字符的启发,所以[65,66,67]打印为"ABC",但[665,666,667]打印为"[665,666,667]"即使你使用~tp。您必须启动Erlang erl +pc unicode才能使其接受255以上的可打印unicode代码点。在该模式下,与一起[665,666,667]打印(但不与一起打印)。"???"~tp~p

有关更多信息,请参见http://erlang.org/doc/man/io.html#printable_range-0,以及文档的最新改进(将包含在OTP 21中):https : //github.com/erlang / otp / pull / 1737 /文件