Python SyntaxError: ファイル内の非 ASCII 文字 xe2

Zeeshan Afridi 2023年6月21日
  1. ASCII コードとは
  2. Python のファイルの SyntaxError: 非 ASCII 文字 '\xe2' とは
  3. Python のファイルで SyntaxError: Non-ASCII character '\xe2' を修正する方法
  4. まとめ
Python SyntaxError: ファイル内の非 ASCII 文字 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 Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

関連記事 - Python Error