问题描述
新建一个名为data.txt,格式为utf8无bom的,里面只是飞机二字,然后用以下程序测试抛出异常: -module(demo).-compile(export_all).test_cn() -> {ok, Fp} = file:open("data.txt", [read, {encoding, utf8}]), {ok, Content} = file:read_line(Fp), file:close(Fp), io:format("~w~n", [get_id_by_name(Content)]).get_id_by_name("飞机") -> %% 当然可以转为get_id_by_name([39134,26426])方法处理 %% 但是实际项目却是数十个,甚至数百个,这样做就不现实了 plane;get_id_by_name("火车") -> train. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%exception error: no function clause matching demo:get_id_by_name([39134,26426]) in function demo:test_cn/0请教下,这个是怎么回事?如何可以做得到中文匹配呢?问题补充jigloo 写道
解决方案
把demo.erl也要存成utf8格式,然后试下这个io:format("~w~n", [get_id_by_name(unicode:characters_to_binary(Content, unicode, utf8))]).
时间: 2024-10-27 23:17:12