读取clozure常见的lisp中的错误

时间:2014-06-17 02:00:38

标签: lisp runtime-error common-lisp ccl

有一个s表达式文件,其中包含外语字符,我正在阅读如下:

(defun test (file)
  (with-open-file (stream file)
    (loop while (read stream nil nil))))

它在ccl 1.8中读取没有错误的文件,但在1.9:

下抛出错误
? (test "/users/markklein/desktop/naples.text")
> Error: Reader error: Illegal symbol syntax.
> While executing: CCL::%PARSE-TOKEN, in process Listener(5).
> Type cmd-. to abort, cmd-\ for a list of available restarts.
> Type :? for other options.
1 > 

有没有人知道出了什么问题,以及如何解决?我可以根据要求发送数据文件。

1 个答案:

答案 0 :(得分:2)

Ben Hyde在a comment中指出R. Matthew Emerson在Clozure邮件列表上谈到了这个问题,并指出Clozure CL的默认外部格式已更改为:utf-8。结果,他提出了这个替代方案:

  

我们在1.9版本中将默认外部格式更改为:utf-8。   这可能是你绊倒了。        尝试明确指定适当的外部格式,例如,

(defun test (file)
  (with-open-file (stream file :external-format :iso-8859-1)
    (loop while (read stream nil nil))))