読者です 読者をやめる 読者になる 読者になる

Shift-JIS追加

sbcl

sbcl(1.0.28)は、文字コード(external-format)に:shift-jisを指定することができない。

> (string-to-octets "あいうえお" :external-format :shift-jis)
debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING {AB6E569}>:
  Unknown external-format :SHIFT-JIS

;; :shift_jisなら大丈夫
> (string-to-octets "あいうえお" :external-format :shift_jis)
--> #(130 160 130 162 130 164 130 166 130 168)

なので、:shift-jisを指定可能にするための設定を追加。

;; :shift-jis と :|Shift-JIS| を新たに追加
(dolist (sjis '(:shift-jis :|Shift-JIS|))
  (pushnew sjis (car (assoc :sjis sb-impl::*external-formats* :test #'member)))
  (setf (gethash  sjis sb-impl::*external-format-functions*)
    (gethash :sjis sb-impl::*external-format-functions*)))

これで:shift-jisでもエラーはでなくなる。

> (string-to-octets "あいうえお" :external-format :shift-jis)
--> #(130 160 130 162 130 164 130 166 130 168)

まあ、手動で文字コードを指定している限りは、必要になることはまずないだろうけど...。