ECL: файловая система не принимает имена файлов с расширенными символами.

как открыть файл, имя которого содержит символ UTF-8? Например:

(open "~/a/你好.txt")

дать это:

The filesystem does not accept filenames with extended characters: "~/a/你好.txt"

Я использую ecl 16.1.3 из emerge от gentoo. Тем временем sbcl может открыть файл.


person C-Entropy    schedule 31.01.2021    source источник
comment
Каков результат (directory (пути слияния #pa/*.txt (путь-user-homedir))) ?   -  person coredump    schedule 31.01.2021
comment
(распечатать (каталог (пути слияния #pa/*.txt (имя-пути-пользователя-homedir)))) дать это :(#P/home/nil/a/ä½ å¥½.txt)   -  person C-Entropy    schedule 31.01.2021


Ответы (1)


Я почти уверен, что ECL просто не поддерживает общие имена файлов Unicode в Unix или Linux, однако они кодируются в базовой файловой системе (я также не знаю, как это происходит с * nix в настоящее время, хотя я думаю, что теперь должен быть стандарт ).

Конкретная ошибка, которую вы видите, возникает из-за здесь, в pathname.d. Если вы затем посмотрите в unixfsys.d вы увидите, что ECL_NAMESTRING_FORCE_BASE_STRING — это один из флагов, передаваемых в ecl_namestring повсюду, и это ничем не обусловлено.

Так что, по крайней мере, вам нужно будет скомпилировать ECL с нуля, и, что более вероятно, он просто вообще не поддерживает общие имена файлов Unicode.

person Community    schedule 01.02.2021