fu7mu4’s diary

はてなダイアリーから移転しました。

ClozureCL で UTF-8 + BOM を作成したい

ClozureCL1.9 で UTF-8 + BOM のテキストを作成したいのだがどうすればいいのかわからない。もうあきらめて、nkfかiconvを呼ぶか。


1. Clozure CL はデフォルトで UTF-8 + BOM に対応しているような、そうでもないような。環境がBOMいるならつけるみたいな書きかただったので、だめみたい。

2. babel(とbabel-stream)ならなんとかできる?

UTF-8Bに対応ってこれ?

(babel:string-to-octets "日本語" :encoding :utf-8b)
;-> #(230 151 165 230 156 172 232 170 158)
(babel:string-to-octets "日本語" :encoding :utf-8)
;-> #(230 151 165 230 156 172 232 170 158)

ちょww
こうしろということですか?
vector-push .. え?

(coerce
   (cons 255
      (cons 254
         (coerce
            (babel:string-to-octets "日本語" :encoding :utf-8)
            'list)))
   'vector)

ちがった、#xEF, #xBBl, #xBFだった。

3. quicklisp で iconv をはっけーん

な、なんとこれでいける??

(ql:system-apropos "iconv")
;-> #<SYSTEM iconv / cl-iconv-20131111-git / quicklisp 2014-06-16>
(ql:quickload :iconv) ;;   インストール途中で死亡

To load "iconv":
Load 1 ASDF system:
cffi
Install 2 Quicklisp releases:
cl-iconv iolib
; Fetching #
; 239.75KB
==================================================
245,499 bytes in 1.76 seconds (136.26KB/sec)
; Fetching #
; 4.67KB
==================================================
4,778 bytes in 0.07 seconds (65.83KB/sec)
; Loading "iconv"
[package iolib.asdf]..............................
[package iolib.conf]..............................
[package cffi-sys]................................
[package cffi-callbacks]..........................
[package cffi]....................................
..................................................
..................................................
[package cffi-features]...........................
[package iolib-grovel]...........
Invoking restart: Give up on "iconv"
(:ICONV)

4. ぐぐる

さらにぐぐると、 http://common-lisp.net/project/trivial-iconv/ と、http://d.hatena.ne.jp/rubikitch/20070713#1184333819 (iconv?)がみつかったけど。これはどうなんだろう?