如何快速在史莱姆中加载 rfc2388



我正在尝试通过粘液中的quicklisp加载hunchentoot,并收到以下错误:

READ error during COMPILE-FILE:
  :ASCII stream decoding error on
  #<SB-SYS:FD-STREAM
    for "file [redacted]/dists/quicklisp/software/rfc2388-20120107-http/rfc2388.asd"
    {100607B723}>:
    the octet sequence #(196) cannot be decoded.
  (in form starting at line: 29, column: 29,
  file-position: 1615)
[Condition of type ASDF:LOAD-SYSTEM-DEFINITION-ERROR]

我在尝试运行时得到这个:

(ql:quickload "hunchentoot")

或者简单地说:

(ql:quickload "rfc2388")

似乎其他人也得到了这个。 我找到了一个可能的答案,说:

The system file is encoded as UTF-8. 
I'm not sure how to configure things so that SBCL on Windows starts with 
UTF-8 as its default encoding for loading sources, but that's what you 
need to do. 

从那里,我已经尝试了(基于例如[this]将以下内容添加到我的emacs配置中:

(set-language-environment "UTF-8")
(setq slime-lisp-implementations
      '((sbcl ("/opt/local/bin/sbcl") :coding-system utf-8-unix)))
(setq slime-net-coding-system 'utf-8-unix)

但。。。即使在完全重新启动 emacs 之后,我仍然会收到相同的错误,以确保我有一个正在读取上述配置的新史莱姆。

那么,我错过了什么,和/或如何加载它?

提前感谢! (非常感谢您获得成功的答案。 ;)

您是否检查过区域设置?Emacs 配置只告诉它为 SLIME 和 SWANK 之间的通信设置了哪些编码系统。

您可以使用/usr/bin/locale 检查区域设置,例如:

navi ~ » locale
LANG=pl_PL.UTF-8
LC_CTYPE=pl_PL.UTF-8
LC_NUMERIC=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY=pl_PL.UTF-8
LC_MESSAGES=C
LC_PAPER=pl_PL.UTF-8
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_ALL=
navi ~ »

如您所见,我的在任何地方都为 UTF-8 设置,除了显示"C"消息。

试试这个:

切换到 .../quicklisp/

dists/quicklisp/software/rfc2388* 目录,并将 RFC2388.asd 加载到文本编辑器中。向下移动到 defsystem 表单的 :author 参数。将作者的姓名替换为文件顶部给出的姓名。使用 ASCII 编码存储文件。

当然,当发布新版本的库时,解决方法会丢失。或者将修改后的项目存储在本地项目中。

由于原始 UTF-8 编码仍然有效,调试器应提供一个 INPUT-REPLACE 选项,以将有问题的输入字符替换为替换字符串。选择该选项,在提示符下键入"?"或"x"或任何您喜欢的字符串,然后输入。然后加载完成。当然,这不是你每次都想做的事情。

因此,最好的主意可能是向作者发送电子邮件,并要求为quicklisp提供ASCII版本。

您的 HOME 中应该有一个包含所有 fasl 文件的 .cache 目录。有时,当编译出现问题时,删除那些旧的 fasl 文件似乎对我有用。

最新更新