永发信息网

如何让Erlang Shell打印出中文

答案:1  悬赏:10  手机版
解决时间 2021-11-23 21:16
如何让Erlang Shell打印出中文
最佳答案
让Erlang Shell打印中文,结合网上和实践做如下整理:
1.用io:format/2的~p打印中文,出来的是unicode编码的list;
用io:format/2的~ts打印中文,就可以打印出中文
[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
1> io:format("test===~p~n",["测试"]).
test===[27979,35797]
ok
2> io:format("test====~ts~n",["测试"]).
test====测试
ok
2.代码中的中文都是以utf8编码过的,即把unicode编码过的list再次用utf8编码
[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
3> xmerl_ucs:to_utf8([27979,35797]).
[230,181,139,232,175,149]
可以看到utf8编码后是一个0-255数组成的一个list,这是项目中经常输出的中文字符的日志。
3.为了输出中文,需要把utf8转换成unicode编码,即
[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
4> unicode:characters_to_list(list_to_binary([230,181,139,232,175,149])).
[27979,35797]
5> io:format("test===~ts~n",[[27979,35797]]).
test===测试
ok
为了方便,写成一个方法,可以在项目中直接调用。
[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
-module(print_log).
-export([log/2,
test/0]).
log(Format, Data)->
L = get_format_list(Format),
DataList=
lists:map(
fun({1, X}) ->
unicode:characters_to_list(iolist_to_binary(X));
({0, X}) ->
X
end, lists:zip(L, Data)),
io:format(Format,DataList).
get_format_list(Format) ->
get_format_list(Format, []).
get_format_list([], Acc) ->
Acc;
get_format_list([$~|L], Acc) ->
case L of
"ts" ++ Other ->
get_format_list(Other, Acc ++ [1]);
"n" ++ Other ->
get_format_list(Other, Acc);
_ ->
get_format_list(L, Acc ++ [0])
end;
get_format_list([_H|L],Acc) ->
get_format_list(L, Acc).
test()->
log("test===~ts",["测试"]).
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
牛吃东西卡住了怎么?
我要做云南过桥米线,做法里说要放秘制调料汁
大家祝我生日快乐哈😊
眼睛散光两百度怎么办
我想和你在一起 却也只是想想而已。是什么意
全国生猪价格今日猪价行情 最新全国生猪价格
圆周立方数是怎么算的
一个以U开头的一个root软件,貌似还要10元一
攀爬的姿态作文范文
我想知道福利彩票店怎么加盟,利润多少
6.2-x=4.5
1980年6.25出生的人缺木吗
弱弱的问一句,我的快递年底还能到吗
嘉年华量贩KTV地址在什么地方,我要处理点事
艾莉丝的神奇宝贝
推荐资讯
为什么我打开CDR9的时候,老出现这个
3000个产品有98个不良品这是百分之几
怎么体罚女生
教学行政用房包括?
泰国斗鱼一窝生的可以养在一起吗
中脉生态家养生会所地址在什么地方,我要处理
运行不流畅?
火链财经的文章都是哪些方面的啊?
c程序设计第四版用什么编程软件
北京二十里餐饮有限公司怎么样?
鸡呜狗盗的主要人物乃是何人?
高手入:求国共十年对峙到建国初期的历史年表
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?