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> までお寄せください。