creole (ver 0.1.1)
概要
ユニコード文字列とバイト列の相互変換を行うためのライブラリ。
対応
ユニコード(UTF-32)に対応しているCommon Lisp処理系で動作可能。
ただし、SBCL(1.0.28以降)にのみ最適化されているため、それ以外の処理系では実用的な速度が出ない可能性がある。
依存パッケージ
charseq
インストール方法
;; asdf-installパッケージが利用可能なことが前提
(asdf-install:install :creole)
API
-- Variable: *default-external-format*
デフォルトで使われる文字エンコーディング
初期値は、UTF-8に固定
-- Variable: *external-formats*
利用可能な文字エンコーディングの一覧
-- Function: string-to-octets string &key external-format start end => (values octets legal?)
文字列を指定されたエンコーディングに従って、バイト列に変換する
文字列内に変換不能な文字が含まれている場合、バイト列内の該当位置が代わりに(code-char #\?)で埋められる
| string | 変換対象となる文字列。string型 |
| external-format | 変換に用いる文字エンコーディング方式 省略された場合は、*default-external-format*の値が使われる |
| start | 対象文字列の変換開始位置。デフォルトの値は0 |
| end | 対象文字列の変換終端位置。デフォルトの値は(length string) |
| octets | 変換後のバイト列。(simple-array (unsigned-byte 8))型 |
| legal? | 対象文字列に変換不能な文字が含まれていた場合はnil、それ以外の場合はtが返る |
-- Function: octets-to-string octets &key external-format end start => (values string legal?)
バイト列を指定されたエンコーディングに従って、ユニコード文字列に変換する
バイト列内に変換不能なシークエンスを検出した場合、文字列内の該当位置が代わりに#\?で埋められる
| octets | 変換対象となるバイト列。(simple-array (unsigned-byte 8))型 |
| external-format | 変換に用いる文字エンコーディング方式 省略された場合は、*default-external-format*の値が使われる |
| start | 対象バイト列の変換開始位置。デフォルトの値は0 |
| end | 対象バイト列の変換終端位置。デフォルトの値は(length octets) |
| string | 変換後の文字列。(simple-array character *)型 |
| legal? | 対象バイト列に変換不能なシークエンスが含まれていた場合はnil、それ以外の場合はtが返る |
参考
・creoleでのバイト列からユニコード文字列への変換方法概要
・UTF系(UTF-8,UTF-16)は、個別に変換コードを実装
・それ以外の文字コードは、あらかじめ作成しておいた変換テーブルに従って変換
・詳細は、右のURLを参照: マルチバイト文字列→ユニコード文字列
・TODO: 変換テーブルの作成コードも配布物に含める