python 2とpython 3の符号化の問題
852 ワード
まず、python 2のデフォルト符号化はascii、python 3のデフォルト符号化はutf-8である.
エンコードフォーマットを指定できます.
または、
pythonの文字列に関連するデータ型はstrとunicodeであり、どちらもbasestringdのサブクラスである.
Python2
strとunicode変換
strはdecodeによりunicodeに復号される.unicodeはencodeによってstrに符号化される.
strタイプは実はバイト列bytesであり、unicodeこそ文字列である.python 2でstrを定義すると:
実際にはaはstrタイプですが、aはbytesで実現され、linux環境ではutf-8で符号化されているので、次のように使用できます.
unicodeを取得します.
Python3
strタイプはbytesではなくunicodeが文字列の形式を表し、type(u'中')が得られるのはstrタイプである.strを定義すると
では、aはu「こんにちは」と等価であり、呼び出すことができます.
bytesストリームに変換します.
エンコードフォーマットを指定できます.
# 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ストリームに変換します.