前々回に作成したURLデコード用の関数では、sb-ext:octets-to-string関数が処理のボトルネックとなっていた。 確かsbcl(1.0.28)はバイト列から文字列への変換には、UTF-8でもShift-JISでもEUC-JP(及びその他)でも出来るような汎用的な方法(枠組み?)*1を採用していたはずだが、(sbclでは)文字は内部的にはユニコード値として表現されているので、それを利用すれば(UTF-8に限れば)もっと効率的に変換できるはずだと思う。 今回はそれを試してみた。 以下がUTF-8バイト列をユニコード文字列に変換する関数。 入力のバイト列はsimple-arrayだと云うことが前提で、若干エラーチェックが不足している。 ※ この関数はsbcl用に作られたものだが、文字の表現としてユニコードを採用している処理系なら一応動作するはず ;;;; 型定義および宣言 (de