【Python入門】UTF-8などの文字コードを扱う方法

皆さんは文字コードやエンコーディングを意識してプログラミングをしていますか?文字コードとエンコーディングはテキストの基本的な仕組みで、意識しないでプログラミングをしていると予期しないエラーが起きる場合があります。

この記事では、

  • 文字コードとは
  • エンコーディングを指定する方法

などの基本的な内容から、

  • Pythonで日本語を扱う方法

について、解説をしていきます。今一度文字コードやエンコーディングについて学び直したい方も、ぜひご覧ください。

文字コードとエンコーディングとは

まずは文字コードとは何かについて、知っておきましょう。文字コードとは、それぞれの文字とビットの組み合わせを決めたものです。例えば「A」があるビットに対応していて、「B」があるビットに対応していて...といった具合に、それぞれ対応するビットがあります。

そしてそのビットと文字を合わせる方式のことをエンコーディングと言います。エンコーディングの方式には、ASCIIやUTF-8、Shift-JISなどがあります。

文字コード説明
ASCIIASCIIは英語圏で使われる方式になります。1文字を1バイトで表現する、最も基礎的なエンコーディングの方式になります。
Shift-JISShift-JISはASCIIに日本独自のひらがなやカタカナ、漢字などを追加したものです。
UTF-8UTF-8はASCIIに世界中で使われている文字を追加しようとしているエンコーディング方式です。

UTF-8では日本語も表示させることができます。

Webサイトのエンコーディングでは90%がUTF-8を使っているという発表もされているくらい、ポピュラーな方式です。

また、文字化けと呼ばれる現象にあった人も多いかと思いますが、これは対応するビットがエンコーディング毎に違っていて、違う対応表を見比べていることから発生します。

文字化けにあってしまった場合も適切な方式でエンコーディングをすれば、その文字化けは解消されます。

このように、

  • 文字コードはテキストの一文字がビットの組み合わせとして変換されているもの
  • エンコーディングはビットの組み合わせとテキストの一文字を照らし合わせる方式

だと思ってもらって良いでしょう。

エンコーディングを指定する方法

それではPythonでエンコーディングを指定する方法について見てみましょう。こちらのコードをご覧ください。

# coding: utf-8

print('こんにちは')

プログラムの最初に「# coding: (エンコーディング方式)」と加えることで、エンコーディングを指定して表示させることができます。

Pythonは標準でUTF-8が採用されているので、よほどのことが無い限りは、Python2ではこの部分は「# coding: utf-8」と書くのが一般的です。また今回使ったprint関数についてわからない方は、こちらの記事をご覧ください。

Pythonで文字列を出力するprint関数の使い方まとめ
更新日 : 2020年3月9日

Pythonで日本語を扱う方法

Python2.4系以降では標準で日本語に対応したので意識しないでも日本語を使えるようになりました。しかし環境によってはエラーが出る場合もあります。

特にWindowsとMacでは標準で採用されている文字コードも違うので、OSが変わるとエラーが出てくる場面も増えます。例えば、Shift-JISで書かれたコードを実行しようとすると、Pythonの標準ではUTF-8が採用されているので、エラーが出てしまいます。

こちらのコードをご覧ください。

Shift_JISで保存されたPythonコード

print('こんにちは')

これをhello.pyとして保存して、実行してみましょう。

実行結果

File "hello.py", line 1
SyntaxError: Non-UTF-8 code starting with 'x82' in file hello.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

するとこのように、UTF-8で解釈をしようとするのでエラーが発生してしまいます。これを防ぐためには基本的にはUTF-8でプログラムを書き、先程のようにエンコーディング方式をプログラムの先頭に書きましょう。

まとめ

この記事ではPythonの文字コードとエンコーディングの方式の関係について解説してきました。文字コードとエンコーディングを調べてみるととても複雑ではありますが、Pythonでは簡単に日本語を扱えるように設計されています。

これらの関係について知っておけば、もしエラーが起きても安心ですね。UTF-8などの文字コードとエンコーディングについて忘れてしまった場合は、ぜひまたこの記事を読んでみてください!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍テック編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー