2014-06-17 8 views
0

다음과 같이 내가에서 읽기 오전, 외국어 문자를 포함하는 S-표현의 파일을 가지고 일반 clozure에서 읽기 오류 :는 혀짤배기

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

그것은 CCL 1.8에서 오류없이 파일을 읽지 만 발생 1.9 이하의 오류 :

? (test "https://stackoverflow.com/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 > 

누구에게 잘못된 아이디어가 있습니까? 어떻게 수정해야합니까? 요청시 데이터 파일을 보낼 수 있습니다.

+3

"나는 요청에 데이터 파일을 보낼 수 있습니다."예를 들어, 명시 적으로 적절한 외부 형식을 지정하십시오 질문에 포함 시키십시오. 문제를 일으키는 텍스트에 문제를 한정하십시오. 예 : 파일의 절반을 잘라냅니다. 문제가 아직 남아 있다면 나머지 절반에, 그렇지 않으면 반을 넣고 나머지 절반을 꺼내십시오. 문제가있는 s- 표현식으로이 문제를 해결할 수 있어야합니다. 완전한 예제를 제공하는 것이 중요합니다. 즉, * 우리 *가 문제를 재현 할 수있을만큼 충분히 의미가 있으며, * 최소한의 예제입니다. 즉, 가능한 한 '추가'가 거의 없음을 의미합니다. –

+3

플러스, 때로는 최소한의 완전한 예제를 만드는 과정은 문제가있는 곳을 보여주기에 충분합니다. –

+2

http://article.gmane.org/gmane.lisp.openmcl.devel/9193? –

답변

2

Ben Hyde는 a commentR. 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))))