Firebird - UNICODE_FSS

Firebirdが対応している文字コードの一つ,UNICODE_FSS.文字コード長が1-3バイトとあり,Unicodeのどの符号化形式なのかちょっとわかりませんでした.ネットで検索してみるとUTF-8のようで,UTF-8って1-4バイトじゃなかったかな?などと思いましたが,基本多言語面(BMP)のみ対応の制限されたUTF-8なら,確かに1-3バイトです.Unicodeを本格的に扱うようになったのは最近のためか,UTF-8は1-4バイト*1だと思いこんでいました.UCS-2対応であって,UTF-16対応じゃないのですね…….
入力がUTF-16の場合はサロゲートペアを3バイトのUTF-8コード値2つに変換するように指定するか,指定できる関数が無ければ自前で変換用関数を書く,入力がUTF-8の場合は4バイトUTF-8コード値を見つけたら3バイトUTF-8コード値2つに変換してやるといった処理が必要かも知れません.
UTF-8はShift JISと違って,長いバイト長のコード値に短いバイト長のコード値が含まれるなんて事が無いように設計されていますから*2,あまり大きなトラブルは無いかも知れませんが,実際にやってみないとわかりません.
現状,サロゲートペアで表される文字を頻繁に使うことは少ないと思いますが,インストールしてすぐにサロゲートペアの文字を利用できるMacOS Xなどだと特にサロゲートペア文字列を考えたコーディングをしておく必要があるかも知れません.
(追記、2005/08/09)

UTF-8はかつて、UTF-2およびFSS-UTF(File System Safe UTF)として知られていた。

Ken Lunde(著), 小松章(訳), 逆井克己(訳), 「CJKV日中韓越情報処理」, O'REILLY, p191, 2002.

FSSというのは、File System Safeって意味だったのですね。

CJKV日中韓越情報処理

CJKV日中韓越情報処理

*1:ものによっては最長6バイト.

*2:有名なところで,Shift JISだと"表"や"ソ"などのコード値(2バイト)中に"\"のコード値(1バイト)が含まれます.この仕様は非常に悩ましい.UTF-8はこういったことが無いように設計されています.