UnicodeError
文字コードの変換に関するエラーの親分類です。UnicodeDecodeErrorとUnicodeEncodeErrorは、このUnicodeErrorの仲間(サブクラス)です。
原因
文字列と文字コード(バイト列)の変換のどこかで問題が起きたことが原因で、通常はより具体的なDecodeError/EncodeErrorとして発生します。
エラーになるコード例
try:
'テスト'.encode('ascii')
except UnicodeError:
print('文字コードの変換に失敗しました')修正版
try:
'テスト'.encode('ascii')
except UnicodeEncodeError:
print('エンコードに失敗しました。utf-8を使いましょう')よくある間違い
- DecodeError(読み込み時)とEncodeError(書き込み時)のどちらが起きているのか区別せずに対処してしまう
- 文字コードの種類(utf-8, shift_jis, asciiなど)の違いを理解しないまま場当たり的に変更してしまう