ECL:文件系统不接受带有扩展字符的文件名

问题描述

如何打开名称包含 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 文件名。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...