文字コードの指定

広告

プログラムの中に文字列が含まれていた場合には、Pythonはデフォルトの文字コードであるASCIIを使って文字を認識しようとします。この時、日本語などのマルチバイト文字が含まれていた場合にも文字コードのASCIIで認識しようとするため不適切な文字としてエラーとなります。

print "こんにちは"

上記を実際に実行してみると次のようにエラーとなります。

文字コードの指定

日本語などをプログラム内で使用する場合には、プログラムの文字コードの指定を行い、そしてその文字コードを使ってファイルを保存する必要があります。

文字コードの設定の書式

Pythonのプログラムで使用する文字コードを指定するには次のように記述します。

# coding: エンコーディング名
# coding=エンコーディング名

上記の文字コードの指定はプログラムの1行目又は2行目に記述された場合にだけ有効です。Pythonにおいては「#」が現れた場合行末まではコメントとして扱われるため、1行目又は2行目ではない位置に記述された場合は単なるコメントとなります。

指定可能な文字コードは色々とありますが、代表的なものとしては次のようなものがあります。

# coding: Shift_JIS
# coding: cp932
# coding: EUC-JP
# coding: UTF-8

※大文字小文字は区別されませんので「utf-8」などと記述することも出来ます。

日本語を利用する場合は「Shift_JIS(又はcp932)」「EUC-JP」「UTF-8」などを設定します。どの文字コードを使わなければいけないというのはありませんが、Pythonにおいてはユニコード文字列を使用する時にUTF-8にしておくと便利なので今後のサンプルでは全て「UTF-8」で統一します。

結果として文字コードを指定したプログラムは次のような形式となります。

# coding: UTF-8

print "こんにちは"

またプログラムを保存する時の文字コードも、プログラムで指定した文字コードを使って保存して下さい。今回のようにプログラムの文字コードを「UTF-8」とした場合は、ファイルを保存する際の文字コードも「UTF-8」とします。

※UTF-8で保存する場合、BOM付き(UTF-8)とBOM無し(UTF-8N)のどちらで行うかですが、Pythonの場合はどちらがいいのかはっきりと分かりませんでした。ただBOM無しのUTF-8Nで保存しておいた方がよさそうではあります。Windowsのメモ帳はBOM付きしか選択できませんので他のエディタをお勧めします。

またマルチバイト文字を扱う場合、文字列は通常の文字列ではなくユニコード文字列を使います。詳しくは別のページで確認しますので、ここではあまり気にしないで下さい。ユニコード文字列では文字列の前に「u」が付きます。

#coding: UTF-8

print u"こんにちは"

上記を「test1-2.py」として保存します。保存する時の文字コードはUTF-8です。そして次のように実行して下さい。

文字コードの指定

日本語も無事出力されました。

( Written by Tatsuo Ikura )