creole (0.1.2) | 2010-08-15 21:37 |
ユニコード文字列とバイト列の相互変換を行うためのライブラリ。
ユニコード(UTF-32)に対応しているCommon Lisp処理系で動作可能。
ただし、SBCL(1.0.28以降)にのみ最適化されているため、それ以外の処理系では実用的な速度が出ない可能性がある。
-- 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: 変換テーブルの作成コードも配布物に含める