Python 2.7.x のドキュメントによると:
コンストラクターには
unicode()
署名がありますunicode(string[, encoding, errors])
。その引数はすべて 8 ビット文字列でなければなりません。最初の引数は、指定されたエンコーディングを使用して Unicode に変換されます。encoding 引数を省略すると、ASCII エンコーディングが変換に使用されるため、127 を超える文字はエラーとして扱われます。>>> unicode('abcdef' + chr(255)) Traceback (most recent call last): ... UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 6: ordinal not in range(128)
では、なぜこれは日本語の文字で機能するのでしょうか?:
TestStr = "サーバ移設"
print TestStr
サーバ移設
そして、なぜこれも機能するのですか?:
TestStr = unicode("サーバ移設")
print TestStr
サーバ移設
日本語の文字は 8 ビット文字列の範囲内にないため、Unicode デコード エラーが発生することが予想されます。