load로 중국어를 포함하는 코드를 불러오려면 인자를 첨부하십시오: external-format:utf-8...
만약lisp 소스 코드에서 중국어를 사용한다면load에서 오류가 발생할 수 있습니다.load 함수의 기본 인코딩 형식은latin이기 때문에 인코딩 형식 파라미터를 특별히 지정해야 합니다. 원본 파일이 my-program이라고 가정하십시오.lisp는 다음 명령을 사용하여 불러오는 데 문제가 없습니다.
(load "my-program.lisp" :external-format :utf-8) 물론, my-program에서.lisp의 첫 줄에는 이런 말이 가장 좋다.;; -*- coding:utf-8 -*- 이렇게 하면 모든 게 OK야.모든 파일 작업은 이 인자를 첨부할 수 있습니다. 예를 들어 오픈 with-open-file 등입니다.
[의혹]
왜 나는load 함수를 정의하는lisp 원본 파일을 찾았습니까? 수정되었습니다:external-format 매개 변수의 기본 매개 변수 값을 원래의default에서:utf-8로 수정했습니다. 그러나 작동하지 않습니다. 실제 실행할 때 전송되는 매개 변수입니까? 아니면:default, 실제 호출할 때 이 매개 변수를 지정해야 합니까?
CCL 구현에서 이 함수는 l1-files.lisp에 정의된 함수는 다음과 같습니다.
(defun load (file-name &key (verbose *load-verbose*)
(print *load-print*)
(if-does-not-exist :error)
(external-format :default))
"Load the file given by FILESPEC into the Lisp environment, returning
T on success.
Extension: :PRINT :SOURCE means print source as well as value"
(loop
(restart-case
(return (%load file-name verbose print if-does-not-exist external-format))
(retry-load ()
:report (lambda (stream) (format stream "Retry loading ~s" file-name)))
(skip-load ()
:report (lambda (stream) (format stream "Skip loading ~s" file-name))
(return nil))
(load-other ()
:report (lambda (stream) (format stream "Load other file instead of ~s" file-name))
(return
(load (choose-file-dialog)
:verbose verbose
:print print
:if-does-not-exist if-does-not-exist))))))[2013-01-28 업데이트]