我试图在Windows上使用CLISP。 所以,当我在命令行中启动它时,我会看到下一个
*** - SYSTEM::DRIVER: Character #\u0414 cannot be represented in the character set CHARSET:cp437 Break 1 [3]>
我怎样才能解决这个问题?
这意味着您正在尝试从(或到)具有ASCII :EXTERNAL-FORMAT
的字符流读取(“无效字节”)或写入(“字符无法表示”)非ASCII字符。 在-Edomain encoding
描述了默认值。
这也可能是由文件系统访问引起的。 如果您的文件的名称与您的CUSTOM:*PATHNAME-ENCODING*
不兼容CUSTOM:*PATHNAME-ENCODING*
,则文件系统访问(例如, DIRECTORY
)将发送此ERROR
SIGNAL
。 您需要设置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并发出错误信号。
cp437
似乎表示一个代码页。 如果我没有记错,代码页437是“US-ASCII”,那只有7位。 看来你需要配置你的“命令行”才能显示unicode。