如何在 Lisp(sbcl+slime) 中打开名称包含 unicode 代码的文件?

How to open a file which name contain unicode code in Lisp(sbcl+slime)?

(with-open-file (s "~/例子.txt"
                 :external-format :utf-8)
  (print s))

结果:

NIL c-string encoding error:
  the character with code 20363 cannot be encoded.
  [Condition of type SB-INT:C-STRING-ENCODING-ERROR]

示例:

在带有最新粘液和 sbcl2.0.2 的 Aquamacs 3.5 中:

iterm2中的sbcl可以做到:

Aquamacs 本身也可以正确打开和写入包含 utf-8 的文件名。

我尝试添加

(setq slime-net-coding-system 'utf-8-unix)
(set-language-environment "UTF-8")

在我的 aquamacs 配置文件中,但它不起作用。 请帮忙!

更新: 我终于找到了原因。 在 Iterm2 中,命令

locale

给出了这个输出:

虽然在 Aquamacs 中从 ui 打开,但在 eshell 中它给出:

我添加后:

(setenv "LANG" "en_US.UTF-8")

我的 Aquamacs 配置成功了! 感谢所有回答我问题的人! 以下是对我有帮助的链接。

What the question exactly is

Resolutions to the question

How to set locale for Emacs open from UI

添加如下内容:

(setenv "LANG" "en_US.UTF-8")

到您的 emacs 配置。 解释在上面。