PythonでUnicodeコードポイントと文字を相互変換する方法【chr, ord, \x, \u, \U】


Unicodeの基本:コードポイントと文字の関係

 

Unicodeは、世界中の文字をコンピュータで扱うための文字コードです。それぞれの文字には、一意の識別番号であるコードポイントが割り当てられています。例えば、「A」という文字にはU+0041、「あ」にはU+3042のようなコードポイントがあります。Pythonでは、このコードポイントと実際の文字を相互に変換する機能が提供されています。


 

コードポイントから文字への変換:chr()関数

 

 

chr()関数の使い方

 

chr() 関数は、整数で表されたUnicodeコードポイントを、対応する文字に変換します。

Python
 
# コードポイントから文字へ
char1 = chr(65)  # 65は 'A' のコードポイント
print(char1)

char2 = chr(12354)  # 12354は 'あ' のコードポイント
print(char2)

 

コードポイントの範囲

 

chr()関数で指定できるコードポイントの範囲は、0から1,114,111 (0x10FFFF) です。この範囲はUnicodeの全コードポイントをカバーしています。


 

文字からコードポイントへの変換:ord()関数

 

 

ord()関数の使い方

 

ord() 関数は、1文字の文字列を、対応するUnicodeコードポイント(整数)に変換します。

Python
 
# 文字からコードポイントへ
code_point1 = ord('A')
print(code_point1)

code_point2 = ord('あ')
print(code_point2)

 

Unicodeエスケープシーケンス:\x, \u, \U

 

Pythonの文字列リテラルでは、特殊な文字を表現するためにエスケープシーケンスを使用できます。Unicode文字もエスケープシーケンスで表現可能です。

 

1バイト表現:\x

 

\x の後に2桁の16進数を続けることで、0x00から0xFFの範囲の文字(通常はLatin-1文字)を表現できます。

Python
 
# \x エスケープ
print('\x41') # 'A' を出力
print('\x61') # 'a' を出力

 

2バイト表現:\u

 

\u の後に4桁の16進数を続けることで、U+0000からU+FFFFの範囲のUnicode文字を表現できます。これはBMP (Basic Multilingual Plane) と呼ばれる最も一般的なUnicodeの範囲です。

Python
 
# \u エスケープ
print('\u0041') # 'A' を出力
print('\u3042') # 'あ' を出力

 

4バイト表現:\U

 

\U の後に8桁の16進数を続けることで、U+000000からU+10FFFFの範囲のUnicode文字を表現できます。これはサロゲートペアや絵文字など、より広い範囲の文字をカバーします。

Python
 
# \U エスケープ (絵文字の例)
print('\U0001F600') # 😄 (Grinning Face)

これらの関数やエスケープシーケンスを理解することで、PythonでのUnicode文字の扱いがより柔軟になります。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座