问题描述
如何打开名称包含 UTF-8 字符的文件? 例如:
(open "~/a/你好.txt")
给这个:
The filesystem does not accept filenames with extended characters: "~/a/你好.txt"
我正在使用来自 gentoo 的 ecl 16.1.3。 同时,sbcl 可以打开文件。
解决方法
我很确定 ECL 根本不支持 Unix 或 Linux 上的通用 unicode 文件名,但是它们在底层文件系统中被编码(我也不知道现在 *nix 是如何发生的,尽管我猜一定有现在是标准)。
您看到的特定错误源自 here,in pathname.d
。如果您随后查看 unixfsys.d
,您会看到 ECL_NAMESTRING_FORCE_BASE_STRING
是到处传递给 ecl_namestring
的标志之一,并且这不受任何条件限制。
所以至少你需要从头开始编译 ECL,而且很可能它根本不支持通用的 unicode 文件名。