3

5> os:cmd("触摸编程").

异常错误:没有函数子句匹配 os:validate1([32534,31243]) (os.erl, line 330)
in function os:cmd/1 (os.erl, line 165)

4

2 回答 2

4

Erlang 使用 latin1 作为其源文件,这意味着您不能直接在代码中使用中文或任何其他不在 latin1 编码中的符号。

实现您想要的最简单的方法是:

Name = [231,188,150,231,168,139,10].
os:cmd("touch " ++ Name).
于 2012-12-01T15:12:45.670 回答
2

好吧,如果你的 shell 的语言环境是UTF-8,那么就这样做:

os:cmd(binary_to_list(unicode:characters_to_binary("touch 编程")))

但是在源文件中,你可以简单地写

os:cmd("touch 编程").

并将文件保存在 中UTF-8,然后一切正常。

似乎 Erlang 解析器对文字字符串做了一些特殊的事情。

于 2012-12-05T05:09:09.153 回答