>5> os:cmd("touch programming").
异常错误:没有与 os:validate1([32534,31243]) 匹配的函数子句(os.erl,第 330 行)
在函数 os:cmd/1 (os.erl, 第 165 行)
Erlang 使用拉丁语 1 作为其源文件,这意味着您不能直接在代码中使用中文或任何其他不在拉丁语 1 编码中的符号。
实现你所抱怨的最简单方法是:
Name = [231,188,150,231,168,139,10].
os:cmd("touch " ++ Name).
好吧
,如果你的shell的语言环境是UTF-8
,就这样做:
os:cmd(binary_to_list(unicode:characters_to_binary("touch 编程")))
但是在源文件中,您可以简单地编写
os:cmd("touch 编程").
并将文件保存在 UTF-8
中,然后一切都会正常工作。
似乎 Erlang 解析器对文字字符串做了一些特别的事情。