0

私が次のように読んでいる、外国語の文字を含む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 > 

何がうまくいかないのか、それを修正する方法はありますか? ご要望に応じてデータファイルをお送りします。

4

1 に答える 1

2

Ben Hyde は、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))))
于 2014-06-17T15:41:46.057 に答える