3

5> os:cmd("touch 编程").


例外エラー:関数 os:cmd/1の os:validate1([32534,31243]) (os.erl、330 行目) に一致する関数句がありません(os.erl、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

シェルのロケールが の場合はUTF-8、次のようにします。

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

しかし、ソースファイルでは、単に書くことができます

os:cmd("touch 编程").

ファイルを に保存するとUTF-8、すべて正常に動作します。

Erlang パーサーがリテラル文字列に対して何か特別なことをしたようです。

于 2012-12-05T05:09:09.153 に答える