load로 중국어를 포함하는 코드를 불러오려면 인자를 첨부하십시오: external-format:utf-8...

1866 단어
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 업데이트]

좋은 웹페이지 즐겨찾기