python 2とpython 3の符号化の問題

852 ワード

まず、python 2のデフォルト符号化はascii、python 3のデフォルト符号化はutf-8である.
エンコードフォーマットを指定できます.
# coding=utf-8

または、
# !/usr/bin/python
# -*- coding: utf-8 -*-

pythonの文字列に関連するデータ型はstrとunicodeであり、どちらもbasestringdのサブクラスである.
Python2
strとunicode変換
strはdecodeによりunicodeに復号される.unicodeはencodeによってstrに符号化される.
strタイプは実はバイト列bytesであり、unicodeこそ文字列である.python 2でstrを定義すると:
a = '  '

実際にはaはstrタイプですが、aはbytesで実現され、linux環境ではutf-8で符号化されているので、次のように使用できます.
a.decode('utf-8')

unicodeを取得します.
Python3
strタイプはbytesではなくunicodeが文字列の形式を表し、type(u'中')が得られるのはstrタイプである.strを定義すると
a = '  '

では、aはu「こんにちは」と等価であり、呼び出すことができます.
a.encode('utf-8')

bytesストリームに変換します.