erlang更新到R17已有一段时间了,公司项目打算从旧版的erlang迁移到R17,却不料有不少的困扰,其中一个问题是中文问题。
这个问题很容易重现:新建一个文件t.erl,保存为utf-8无bom格式
-module(t).
-export([test/0]).
test() ->
["我", <<"我">>].
在旧版的erlang中,下面的代码能正常工作,结果就是:
Eshell V5.9.1 (abort with ^G)
1> c(t).
{ok,t}
2> t:test().
[[230,136,145],<<230,136,145>>]
R17编译后的运行结果为:
Eshell V6.0 (abort with ^G)
1> c(t).
{ok,t}
2> t:test().
[[25105],<<17>>]
找到erlang的
文档,erlang更新到R17后,默认编码从Latin-1换成了utf8
In Erlang/OTP 17.0, the