5> os:cmd("触摸编程").
异常错误:没有函数子句匹配 os:validate1([32534,31243]) (os.erl, line 330)
in function os:cmd/1 (os.erl, line 165)
5> os:cmd("触摸编程").
异常错误:没有函数子句匹配 os:validate1([32534,31243]) (os.erl, line 330)
in function os:cmd/1 (os.erl, line 165)
Erlang 使用 latin1 作为其源文件,这意味着您不能直接在代码中使用中文或任何其他不在 latin1 编码中的符号。
实现您想要的最简单的方法是:
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 解析器对文字字符串做了一些特殊的事情。