creole (ver 0.1.1)

概要

ユニコード文字列とバイト列の相互変換を行うためのライブラリ。

対応

ユニコード(UTF-32)に対応しているCommon Lisp処理系で動作可能。
ただし、SBCL(1.0.28以降)にのみ最適化されているため、それ以外の処理系では実用的な速度が出ない可能性がある。

依存パッケージ

charseq

インストール方法

  1. ;; asdf-installパッケージが利用可能なことが前提
  2. (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: 変換テーブルの作成コードも配布物に含める