Pythonを使っていると、文字コードや文字列の変換が必要になることがありますよね。
でも、文字コードって何?どうやって変換すればいいの?と疑問に思ったことはありませんか?
やり方はかんたんです。
「encode」メソッドと「decode」メソッドを使えば、あっという間に文字列と文字コードの変換ができるようになります!
UTF-8、ASCII、Shift_JISといった代表的な文字コードの変換プログラムもまじえて解説しています。
実際にプログラムを動かすことで、どのように文字列と文字コードを変換するのか理解が深まると思います。ぜひ実際にコードを入力して動かしてみて下さいね。
Pythonの標準文字コード(バージョン3.x以降)は UTF-8です。
UTF-8:Unicode Transformation Format, and the ‘8’
Python ソースコードのデフォルトエンコーディングは UTF-8 なので、文字列リテラルの中に Unicode 文字をそのまま含めることができます
出典:>> Unicode HOWTO Pythonドキュメント
もくじ
文字列 ⇔ バイト列(文字コード) 変換メソッド
Pythonには、文字列とバイト列(文字コード)を相互に変換するメソッド「encode()」 と 「decode() 」があります。
このメソッドを使うと、「文字列がどんなバイト列か?」、具体的な値を確認できます。
encode メソッド
'文字列'.encode('文字コード名')
文字列をバイト列に変換することを、エンコード(Encode:符号化)と言います。
decode メソッド
b'バイト列'.decode('文字コード名')
逆に、バイト列を文字列に戻すことを、デコード(Decode:復号化)と言います。
「バイト列」とは?
メソッドの実行方法
この記事では、メソッドの実行をPythonのスクリプトファイルを作成せずに、ターミナル上で直接入力して実行しています。
Visual Studio Cod(Microsoft社の無料のコード エディター)の実行画面だと、こんな感じです。自分の環境に合わせて実行してもらえればOKです。
上記の実行内容を説明すると、最初のコマンド2行「import sys」と「sys.getdefaultencoding()」で、自分のPython環境の、エンコード方式のデフォルト設定を確認してます。
通常のPython環境では、上記画面の実行結果「'utf-8'」のように、UTF-8 がデフォルト設定になっていると思います。
[エンコード方式の確認コマンド]
import sys
sys.getdefaultencoding()
文字列 ⇔ バイト列を実際に変換してみよう
実際に、文字列 ⇔ バイト列(文字コード)を相互に変換してみましょう。以下の3種類のサンプルソースを用意しています。
以下のリンクでは、『文字コードの基礎の基礎』を説明しています。
もし「文字コードって、なんだっけ?」、とぼんやりしている場合は、おさらいも兼ねてぜひ読んでみてください。
>>文字コードとは?文字コードの確認方法や、文字化けの原因・対処法がわかる!
-
文字コードとは? CSVファイル (Excel) の文字化けの原因・直し方がわかる!
続きを見る
プログラミングするときに「文字コード」、ってあまり意識しないですよね?
でも、「日本語」を扱う場合は特に重要な知識です!
サンプル① 『UTF-8』のバイト列へ変換する
文字 ⇒ UTF-8のバイト列へ変換してみましょう。
コマンド①
「あ」を UTF-8 のバイト列へ変換します。
'あ'.encode('utf-8')
実行結果
b'\xe3\x81\x82'
今度は、逆に、上記実行結果で得られたUTF-8のバイト列を、変換前の文字列へ戻してみましょう。
コマンド②
b'\xe3\x81\x82'.decode('utf-8')
実行結果
変換前の文字「あ」に戻りました。
'あ'
サンプル②『ASCII』のバイト列へ変換する
文字 ⇒ ASCIIのバイト列へ変換してみましょう。
コマンド①
「A」を ASCII のバイト列へ変換します。
ord('A')
実行結果①
以下のような結果が出ました。↓ この値は、10進数表示です。
65
コマンド②
↑ 上記結果を hex()関数で、16進数表示へ変換してみましょう。hex()は、Pythonの組み込み関数です。
hex(65)
実行結果②
16進数表示の結果が得られました。
'0x41'
上記コマンド①と②を、1行でまとめて書けます。結果はもちろん同じです。
コマンド ③
hex(ord('A'))
実行結果③
16進数表示の結果が得られました。
'0x41'
今度は、逆に、ASCIIのバイト列 ⇒ 文字へ変換してみます。
コマンド④
上記実行結果で得られたバイト列を、変換前の文字列へ戻してみましょう。
chr(0x41)
実行結果④
変換前の文字「A」に戻りました。
'A'
サンプル③『Shift_JIS』のバイト列へ変換する
文字 ⇒ Shift_JISのバイト列へ変換してみましょう。
コマンド①
「あ」を Shift_JIS のバイト列へ変換します。
'あ'.encode('shift_jis')
実行結果①
b'\x82\xa0'
今度は、逆に、上記実行結果で得られたShift_JISのバイト列 ⇒ 文字列へ戻してみましょう。
コマンド②
b'\x82\xa0'.decode('shift_jis')
実行結果②
変換前の文字「あ」に戻りました。
'あ'
まとめ:文字列⇔文字コードをかんたんに変換!
この記事では、Pythonで、文字列と文字コード(バイト列)を変換するコードの書き方を紹介しました。
「文字コード」は普段あまり意識しないかもしれませんが、「日本語」を扱う場合は特に重要な知識です。
こういう目立たないけど重要な知識をおさえておくと、開発現場でほんとに必要になったときにきちんと説明できあれば、あなたは周りから一目置かれる存在になると思います。
ところで、Pythonを学ぶと、「将来どんなキャリアを歩めるのか?」、「どんな場面で役に立つのか?」、気になりませんか?
以下のリンクでは、Pythonのスキルを活かせる、代表的な4つの仕事を紹介しています。
「将来どうしようかな~」と、まだぼんやりしているのであれば、自分の未来を見つけるためにもぜひ読んでみてください。
-
【初心者向け】Pythonでできること・できないこと。具体例でわかりやすく解説
続きを見る