Babel


Tags: ライブラリ, Babel

Babel文字符号化方式(以下エンコーディング)を変換するライブラリです。他の言語で書かれたライブラリのAPIForeign function interfaceで利用する形ではなく、すべてCommon Lispで書かれているのが特徴です。

Clozure CLのコードがベースになっているので、Clozure CLとAPIが似ています。



対応しているエンコーディング

babel:list-character-encodingsは対応しているエンコーディングのリストを返します。

(babel:list-character-encodings)
;=> (:CP932 :EUCJP :CP1252 :CP1251 :UCS-2BE :UCS-2LE :UCS-2 :UTF-32BE :UTF-32LE
;    :UTF-32 :UTF-16BE :UTF-16LE :UTF-16 :UTF-8B :UTF-8 :ISO-8859-16 :ISO-8859-15
;    :ISO-8859-14 :ISO-8859-13 :ISO-8859-11 :ISO-8859-10 :ISO-8859-9 :ISO-8859-8
;    :ISO-8859-7 :ISO-8859-6 :ISO-8859-5 :ISO-8859-4 :ISO-8859-3 :ISO-8859-2
;    :ISO-8859-1 :EBCDIC-US :ASCII)

文字列からエンコードされたバイト列への変換

babel:string-to-octetsは、文字列を指定したエンコーディングのバイト列に変換します。

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

;; CP932に変換
(babel:string-to-octets "日本語" :encoding :cp932)
;=> #(147 250 150 123 140 234)

エンコードされたバイト列から文字列への変換

babel:octets-to-stringは、指定したエンコーディングのバイト列を文字列に変換します。バイト列の型が(unsigned-byte 8)のベクタでないといけないことに注意してください。

;; UTF-8から変換
(let ((vector (make-array 9 :initial-contents '(230 151 165 230 156 172 232 170 158)
                          :element-type '(unsigned-byte 8))))
  (babel:octets-to-string vector :encoding :utf-8))
;=> "日本語"

;; CP932から変換
(let ((vector (make-array 6 :initial-contents '(147 250 150 123 140 234)
                          :element-type '(unsigned-byte 8))))
  (babel:octets-to-string vector :encoding :cp932))
;=> "日本語"

参考文献


Last modified : 2011/09/03 19:06:29 JST
CC0 1.0
Powerd by WiLiKi 0.6.1 on Gauche 0.9