환경은 CLISP + emacs + slime
CLISP은 유니코드를 지원한다. 유니코드를 지원하게 하기위해서는
라인을 .emacs 에 넣어두어야한다.
우선 여기까지 되었으면 with-open-file 에서 각 stream에 encoding을 정의해주어야한다.
몇가지 예제 파일을 찾다가 Common Lisp Cookbook 에서 힌트를 찾았다.
:external-format을 설정해주면 모든 문제가 일단 OK
아래는 변경한 save-db, load-db이다.
이상으로 문제는 완료..
이제 유니코드를 사용해도 정상적으로 출력이 된다. 핵심은 역시 (ext: ... ) 부분..

CLISP은 유니코드를 지원한다. 유니코드를 지원하게 하기위해서는
<blockquote>(setq slime-net-coding-system 'utf-8-unix)</blockquote>
라인을 .emacs 에 넣어두어야한다.
우선 여기까지 되었으면 with-open-file 에서 각 stream에 encoding을 정의해주어야한다.
몇가지 예제 파일을 찾다가 Common Lisp Cookbook 에서 힌트를 찾았다.
:external-format을 설정해주면 모든 문제가 일단 OK
아래는 변경한 save-db, load-db이다.
(defun save-db (filename)
(with-open-file (out filename
:external-format (ext:make-encoding :charset 'charset:utf-8 :line-terminator :unix)
:direction :output
:if-exists :supersede)
(with-standard-io-syntax (print *db* out))))
(defun load-db (filename)
(with-open-file (in filename
:external-format (ext:make-encoding :charset 'charset:utf-8 :line-terminator :unix))
(with-standard-io-syntax
(setf *db* (read in)))))
이상으로 문제는 완료..
이제 유니코드를 사용해도 정상적으로 출력이 된다. 핵심은 역시 (ext: ... ) 부분..

댓글 없음:
댓글 쓰기