我试图在Windows上使用CLISP。所以,当我在命令行中启动时,我会看到下一个
*** - SYSTEM::DRIVER: Character #\u0414 cannot be represented in the character set CHARSET:cp437
Break 1 [3]>
我该如何解决这个问题?
答案 0 :(得分:4)
这意味着您尝试从(或)具有ASCII :EXTERNAL-FORMAT
的字符流中读取(“无效字节”)或写入(“字符无法表示”)非ASCII字符。默认值在-Edomain encoding
。
这也可能是由文件系统访问引起的。如果您的文件名称与CUSTOM:*PATHNAME-ENCODING*
不兼容,则文件系统访问权限(例如DIRECTORY
)将SIGNAL
此ERROR
。您需要设置CUSTOM:*PATHNAME-ENCODING*
或将-Edomain encoding
传递给CLISP。使用“1:1”编码(例如CHARSET:ISO-8859-1
)可以帮助您避免此错误。
请注意,此错误可能由read-eval-print循环的“Print”部分发出信号,而不是由您调用的函数发出信号。例如,如果文件" foo"包含非ASCII字符,当您键入
时,您会看到这样的错误(WITH-OPEN-FILE (s "foo"
:direction :input
:EXTERNAL-FORMAT CHARSET:ISO-8859-1)
(READ-LINE s))
如果您输入
(WITH-OPEN-FILE (s "foo"
:direction :input
:EXTERNAL-FORMAT CHARSET:ISO-8859-1)
(SETQ l (READ-LINE s))
NIL)
当您键入l时,CLISP将只打印NIL并发出错误信号。
答案 1 :(得分:1)
cp437
似乎表示代码页。代码页437是" US-ASCII"如果我没记错的话,那只是7位。您似乎需要配置"命令行"显示unicode。