字符不能用CLISP(2.49)中的字符集表示

我试图在Windows上使用CLISP。 所以,当我在命令行中启动它时,我会看到下一个

*** - SYSTEM::DRIVER: Character #\u0414 cannot be represented in the character set CHARSET:cp437 Break 1 [3]> 

我怎样才能解决这个问题?

这是一个常见问题 :

这些错误消息意味着什么:“CHARSET中的无效字节#x94:ASCII转换”和“字符#\ u00B3不能用字符集CHARSET:ASCII”表示?

这意味着您正在尝试从(或到)具有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时,C​​LISP将只打印NIL并发出错误信号。

cp437似乎表示一个代码页。 如果我没有记错,代码页437是“US-ASCII”,那只有7位。 看来你需要配置你的“命令行”才能显示unicode。