UnicodeDecodeError: 'ascii' コーデックが Python 2.x でバイトをデコードできませんが試行を示しています非 ASCII 文字を含む Python 2.x str を Unicode 文字列に変換します。元の文字列のエンコーディングを指定します。
Unicode 文字列は、文字列とは異なり、Unicode ポイント コードを保持し、スペクトル全体の任意の Unicode ポイントを表すことができます。一方、文字列には、UTF-8、UTF-16、ISO-8895-1 などのエンコードされたテキストが含まれます。文字列は Unicode にデコードされ、その逆も行われます。ファイルとテキスト データは常にエンコードされた文字列で転送されます。
Markdown モジュールは unicode() を使用して受信文字列を検証し、それらが ASCII 文字列または再ラップされた Unicode 文字列であることを確認します。 Markdown の作成者は、受信文字列のエンコーディングを決定できないため、文字列を渡す前にユーザーが文字列を Unicode にデコードすることに依存しています。
Unicode 文字列は、コードの前に「u」接頭辞を使用して宣言できます。弦。例:
my_u = u'my ünicôdé strįng'
明示的な unicode() 呼び出しがなくても、str から Unicode への変換が発生する可能性があります。次の状況では、UnicodeDecodeError 例外がトリガーされる可能性があります:
ソース コード: 非 ASCII 文字は、Unicode 文字列を使用してソース コードに含めることができます。 「u」接頭語。 Python がソース コードを正しくデコードできるようにするには、正しいエンコード ヘッダーが含まれている必要があります。 UTF-8 ファイルの場合、次を使用します:
# encoding: utf-8
ファイル: 正しいエンコーディングで io.open を使用して、ファイルをオンザフライでデコードします。たとえば、UTF-8 ファイルの場合:
import io with io.open("my_utf8_file.txt", "r", encoding="utf-8") as my_file: my_unicode_string = my_file.read()
データベース: Unicode 文字列を返し、SQL クエリに Unicode 文字列を使用するようにデータベースを構成します。
HTTP: Web ページにはさまざまなエンコーディングを使用できます。 Python-Requests は、response.text で Unicode を返します。
手動: my_string.decode(encoding) を使用して文字列を手動でデコードします。エンコーディングは適切なエンコードです。
Python 3 は、Python 2.x とは若干異なる方法で Unicode を処理します。通常の str は Unicode 文字列になり、古い str はバイトになりました。
Python 3 では、デフォルトのエンコードは UTF-8 であるため、エンコードを指定せずにバイト文字列をデコードするには UTF-8 が使用されます。さらに、open() はデフォルトでテキスト モードで動作し、デコードされた str (Unicode 文字列) を返します。
以上がUnicodeDecodeError を解決する方法: 'ascii' コーデックは Python 2.x でバイトをデコードできませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。