エラー辞典

UnicodeError

文字コードの変換に関するエラーの親分類です。UnicodeDecodeErrorとUnicodeEncodeErrorは、このUnicodeErrorの仲間(サブクラス)です。

原因

文字列と文字コード(バイト列)の変換のどこかで問題が起きたことが原因で、通常はより具体的なDecodeError/EncodeErrorとして発生します。

エラーになるコード例

try:
    'テスト'.encode('ascii')
except UnicodeError:
    print('文字コードの変換に失敗しました')
UnicodeEncodeError: 'ascii' codec can't encode characters (UnicodeErrorとしてもキャッチできる)

修正版

try:
    'テスト'.encode('ascii')
except UnicodeEncodeError:
    print('エンコードに失敗しました。utf-8を使いましょう')

よくある間違い

  • DecodeError(読み込み時)とEncodeError(書き込み時)のどちらが起きているのか区別せずに対処してしまう
  • 文字コードの種類(utf-8, shift_jis, asciiなど)の違いを理解しないまま場当たり的に変更してしまう

← エラー辞典に戻る