Python3の文字コードについて
情報系の備忘録的なのを書こうかと思い、投稿してみた。
…が、書き途中で他の仕事やり始めてしまったので、とりあえず未完成品を投稿。
余裕がある時にコードとか追加しようかな…。
はじめに
今回は、Python3の文字コードについてまとめておこうと思う。
最近、他のサイトのデータを持ってきて、整形する作業をやってみたが、
requestで持ってくるときや、ファイル書き込みするときにErrorや文字化けが…。
色々サイトを漁ってもよくわからなかったので、詳しい人に聞いてみました。
以外とスッキリした気がするので、ここに書いておこうと思う。
文字コードとは
まず文字コードとは何ぞやという人もいると思い、簡単に書いてみる。
端的に言うと、
文字1つに対して、1つの2進数が割り振られているもの
だと思います…。
ある文字に対して、1つの通し番号が割り振られており、
その通し番号で、どの文字に変換するかを決めたもの。
Python3の文字コードは??
では、Python3の文字コードは何が使われているのか。
これを1つずつ説明していく。
Python3の文字について
Python3内の変数などに格納される文字は、Unicode。
>>>'あ' == u'\u3042'
True
Python2だとstring型とか色々あったらしいが、
少なくともPython3の文字はこれで統一されているみたい。
.pyファイルの文字コード
Pythonのコードが書かれたファイルはUTF-8で書かれている。
試しに以下のようなファイルを作成して
test = "こんにちは世界"
WindowsのConsole(Shift-jis)で出力してみると
>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とかも対処しやすそう…。
間違ってたら教えてくださるとありがたい!
Author And Source
この問題について(Python3の文字コードについて), 我々は、より多くの情報をここで見つけました https://qiita.com/PonPond/items/7b92d661e43a7ce9c236著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .