Python SyntaxError: ファイル内の非 ASCII 文字 xe2
- ASCII コードとは
-
Python のファイルの
SyntaxError: 非 ASCII 文字 '\xe2'
とは -
Python のファイルで
SyntaxError: Non-ASCII character '\xe2'
を修正する方法 - まとめ
このエラーは、コードに非 ASCII 文字を記述していることを示しています。 コンパイル時に、インタープリターが混乱して SyntaxError: Non-ASCII character '\xe2'
をスローします。
ASCII 文字は UTF-8 の最初の 128 文字と同じエンコーディングを使用するため、ASCII テキストは UTF-8 と互換性があります。 まず、ASCII 文字と非 ASCII 文字の違いを理解する必要があります。
ASCII コードとは
ASCII は、コンピューターおよびインターネット上のテキスト データの最も一般的な文字エンコード形式です (情報交換のための米国標準コード)。
ASCII エンコード データ内の 128 個の追加の英字、数字、特殊文字、および制御文字には個別の値があります。
Python のファイルの SyntaxError: 非 ASCII 文字 '\xe2'
とは
このエラーの背後にある主な理由は、Python コンパイラによって認識されない文字を読み取っていることです。
たとえば、Python インタープリターが認識しない記号 £
を試してみましょう。
string = "£"
fp = open("test.txt", "w+")
fp.write("%s" % string)
print(string)
出力:
SyntaxError: Non-ASCII character '\xe2'
記号 £
はインタープリターによって認識されないため、SyntaxError: Non-ASCII character '\xe2'
が返されます。
Python のファイルで SyntaxError: Non-ASCII character '\xe2'
を修正する方法
ここでは、プログラムの先頭にステートメント #coding: utf-8
を含めました。 このコードは、£
値が格納されたファイル test.txt
を作成し、示されているように出力に出力します。
コード例:
# coding: utf-8
string = "£"
fp = open("test.txt", "w+")
fp.write("%s" % string)
print(string)
出力:
£
エラーが提供するPEP
を読むと、コードがそれを利用しようとしているにもかかわらず、£
はASCII文字ではないと言われました。 可能であれば UTF-8 エンコーディングを使用し、# coding: utf-8
をプログラムの先頭に置いて開始します。
さらに複雑にするために、コード内で文字列ごとにエンコーディングを宣言することもできます。 ただし、£
リテラルをコードに追加しようとしている場合は、ファイル全体でそれをサポートするエンコーダーが必要になります。
以下に示すコード行を追加することもできます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
まとめ
Python では、インタープリターが SyntaxError
として扱うため、非 ASCII は許可されていません。 Python は、バイトのシーケンスが ASCII 範囲外で表す文字列を特定することはできませんし、試みる必要もありません。
このエラーを解決するには、プログラムの先頭に coding: utf-8
を追加する必要があります。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません