これはpython 2.4にあります。これが私の状況です。データベースから文字列を取得すると、ウムラウト付きの 'o' (\xf6) が含まれています。この時点で type(value) を実行すると、str が返されます。次に、.decode('utf-8') を実行しようとすると、エラーが発生します ('utf8' コーデックは位置 1 ~ 4 のバイトをデコードできません)。
ここでの本当に私の目標は、type(value) が Unicode を返すようにすることです。いくつかの有用な情報を含む以前の質問を見つけました が、選択した回答の例は実行できないようです。ここで私が間違っていることはありますか?
再現するコードは次のとおりです。
Name = 'w\xc3\xb6rner'.decode('utf-8')
file.write('Name: %s - %s\n' %(Name, type(Name)))
最初のステートメントで失敗するため、実際に書き込みステートメントに到達することはありません。
ご協力ありがとうございました。
編集:
DBの文字セットがutf8であることを確認しました。そのため、再現するコードで「\xf6」を「\xc3\xb6」に変更しましたが、それでもエラーが発生します。「utf-8」と「utf8」に違いはありますか?
コーデックを使用したファイルへの書き込みに関するヒントは便利ですが (私は間違いなく使用します)、このシナリオでは、デバッグ目的でログ ファイルに書き込むだけです。