Die Fehlermeldung sagt Ihnen genau, was falsch ist. Der Python-Interpreter muss die Codierung des Nicht-ASCII-Zeichens kennen.
Wenn Sie U + 00A3 zurückgeben möchten, können Sie sagen
return u'\u00a3'
Dies repräsentiert dieses Zeichen in reinem ASCII über eine Unicode-Escape-Sequenz. Wenn Sie eine Bytezeichenfolge zurückgeben möchten, die das Literalbyte 0xA3 enthält, ist dies der Fall
return b'\xa3'
(wo in Python 2 das b
implizit ist; aber explizit ist besser als implizit).
Das verknüpfte PEP in der Fehlermeldung weist Sie genau an, wie Sie Python mitteilen sollen, dass es sich bei dieser Datei nicht um reines ASCII handelt. Hier ist die von mir verwendete Codierung. Wenn die Codierung UTF-8 ist, wäre das
# coding=utf-8
oder die Emacs-kompatiblen
# -*- encoding: utf-8 -*-
Wenn Sie nicht wissen, welche Codierung Ihr Editor zum Speichern dieser Datei verwendet, überprüfen Sie sie mit einem Hex-Editor und etwas Googeln. Der StapelüberlaufZeichenkodierungDas Tag verfügt über eine Tag-Infoseite mit weiteren Informationen und einigen Tipps zur Fehlerbehebung.
In so vielen Worten kann und darf Python außerhalb des 7-Bit-ASCII-Bereichs (0x00-0x7F) nicht erraten, welche Zeichenfolge eine Folge von Bytes darstellt. https://tripleee.github.io/8bit#a3 zeigt 21 mögliche Interpretationen für das Byte 0xA3 und das ist nur aus den alten 8-Bit-Codierungen; Es könnte aber auch das erste Byte einer Mehrbyte-Codierung sein. Aber in der Tat würde ich vermuten, dass Sie tatsächlich Latin-1 verwenden, also sollten Sie haben
# coding: latin-1
als erste oder zweite Zeile Ihrer Quelldatei. Ohne zu wissen, welchen Charakter das Byte darstellen soll, könnte ein Mensch dies auch nicht erraten.
Eine Einschränkung: coding: latin-1
Entfernt definitiv die Fehlermeldung (da es keine Byte-Sequenzen gibt, die in dieser Codierung technisch nicht zulässig sind), führt jedoch möglicherweise zu einem völlig falschen Ergebnis, wenn der Code interpretiert wird, wenn die tatsächliche Codierung etwas anderes ist. Sie müssen die Codierung der Datei wirklich mit absoluter Sicherheit kennen, wenn Sie die Codierung deklarieren.