我正在尝试通过粘液中的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 文件似乎对我有用。