有一个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 >
有没有人知道出了什么问题,以及如何解决?我可以根据要求发送数据文件。
答案 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))))