LoginSignup
0
0

More than 3 years have passed since last update.

Python3の文字コードについて

Last updated at Posted at 2020-12-29

情報系の備忘録的なのを書こうかと思い、投稿してみた。

…が、書き途中で他の仕事やり始めてしまったので、とりあえず未完成品を投稿。
余裕がある時にコードとか追加しようかな…。

はじめに

今回は、Python3の文字コードについてまとめておこうと思う。

最近、他のサイトのデータを持ってきて、整形する作業をやってみたが、
requestで持ってくるときや、ファイル書き込みするときにErrorや文字化けが…。

色々サイトを漁ってもよくわからなかったので、詳しい人に聞いてみました。
以外とスッキリした気がするので、ここに書いておこうと思う。

文字コードとは

まず文字コードとは何ぞやという人もいると思い、簡単に書いてみる。

端的に言うと、

文字1つに対して、1つの2進数が割り振られているもの

だと思います…。

ある文字に対して、1つの通し番号が割り振られており、
その通し番号で、どの文字に変換するかを決めたもの。

Python3の文字コードは??

では、Python3の文字コードは何が使われているのか。

全体を図にするとこんな感じ。
picture_for_qittq_strcode.jpg

これを1つずつ説明していく。

Python3の文字について

Python3内の変数などに格納される文字は、Unicode

PythonConsole
>>>'あ' == u'\u3042'
True

Python2だとstring型とか色々あったらしいが、
少なくともPython3の文字はこれで統一されているみたい。

.pyファイルの文字コード

Pythonのコードが書かれたファイルはUTF-8で書かれている。

試しに以下のようなファイルを作成して

test_python_file.py
test = "こんにちは世界"

WindowsのConsole(Shift-jis)で出力してみると

console(Windows)
>type test_python_file.py
test = "縺薙s縺ォ縺。縺ッ荳也阜"

.pyのファイルはUTF-8で書かれているため、もちろん文字化けする

Pythonのプログラムで作成された.txtファイルなど

これについては、ちょっと複雑。

使っている環境(OS)で異なるみたい。

Windows -> Shift-jis
Mac, Linux -> UTF-8

まとめ

全体的に言いたいことは、以下の通り。

環境 文字コード
Python3の文字 Unicode
.pyファイルのコード UTF-8
出力ファイルなど Windows : Shift-jis, Mac&Linux : UTF-8 (環境に依存)

この内部構造が分かっていると、文字コードのErrorとかも対処しやすそう…。

間違ってたら教えてくださるとありがたい!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0