Unicode 文字とコード・ポイントを扱う Python モジュールです。組み込みの ord 関数や unichr 関数では物足りないあなたに。
codepoint.codepoint(c)Unicode 文字 c のコード・ポイントを返します。
Unicode では、エンコーディングによってはひとつのコードポイントの文字が複数のコードポイントの組み合わせで表現される場合があります(サロゲート・ペア)。この関数はサロゲート・ペアを本来のコードポイントに復元して返します。たとえば、codepoint.codepoint(u'\ud842\udf9f') は 134047 (0x20b9f) を返します。u'\ud842\udf9f' は u'\U00020b9f' (U+20B9F) をサロゲート・ペアで表わした表現です。
codepoint.unichr(cp)コード・ポイント cp に相当する Unicode 文字を返します。
Unicode では、エンコーディングによってはひとつのコードポイントの文字が複数のコードポイントの組み合わせで表現される場合があります(サロゲート・ペア)。このため、この関数で返される unicode オブジェクトは長さが 1 より大きい場合があります。たとえば、codepoint.unichr(0x20b9f) は u'\U00020b9f' を返しますが、これはほとんどの Python のビルドで u'\ud842' と u'\udf9f' の組み合わせで表現されます。組み込み関数の unichr() はこのようなコード・ポイントに対しては ValueError を発生させます。
codepoint.characters(s)Unicode 文字列 s を文字ごとに分割したリストを返します。
Unicode では、エンコーディングによってはひとつのコードポイントの文字が複数のコードポイントの組み合わせで表現される場合があります(サロゲート・ペア)。このため返されるリストの長さは len(s) とは異なる可能性があります。そうした文字を含む文字列に対しては、for c in s: のような処理を行うとサロゲート・ペアで表現されている文字がばらばらに分割されてしまいます。
codepoint.py はパブリック・ドメインにあるものとします。
このページについてのコメントはゲストブックまたはメール <mshibata at emptypage.jp> までお寄せください。