no-image

pythonの文字コードで苦戦

日本語はマルチバイト文字?

素人が文字コードに当たると苦戦します。なにか体系的に理解できるサイトはないものかと思い、サイトを巡回していました。しかしどれも専門的なもののように見えます。文字コードの話は言っていることはなんとなく理解できるのですが・・・。

そんな中こんな一文を見つけました。

Pythonはさまざまな言語に対応しており、日本語も当然扱うことができます。しかし、日本語はマルチバイト文字と呼ばれ、英語などと比べると扱いが少し難しいです。そのため、文法はあっているのに日本語を出力しようとするとエラーが出る、ということが良くあります。

Pythonのデフォルトの文字コードはUTF-8

pythonのデフォルトの文字コードはUTF-8だそうです。

対してwindowsにも文字コードがあります。

コマンドプロンプトにも文字コードがあります。

などなど、色々おっていく過程で、インターネットの情報も古くなっている可能性があり、素人ではとても手に負えない話になってしまいます。文字コードのことを頭の片隅に入れておくだけは良い対策とは言えないきがしています。

ですが、pythonのデフォルトはUTF-8ということを知っていれば、なんなく説明がつく話もあるかもしれません。ファイルエディタの種類、OS種類によってファイルの文字コードが変わっているかもしれません。

Pythonのプログラムに文字コードを指定する

特殊な形式のコメントをソースコードの1行目もしくは2行目に配置することで、UTF-8 ではないエンコーディングを使うことができます

引用元: Unicode HOWTO — Python 3.6.5 ドキュメント

上記の引用元にかかれてあるのはこの書き方ですね。

# -*- coding: <encoding name> -*-

プログラムで文字コードを指定することでエラーを発生を防げるかもしれないです。引用のリンクは少々読みにくいですが、文字コードの歴史から解説してあります。僕も素人ですが抑えるべきポイントはpythonのデフォルトがUTF-8という点だと思います。そしてなるだけ、プログラムをUTF-8として実行させる。

なにかのミスで違う文字コードをpythonに読み込ませるとエラーが発生するのだと思います。