Ich habe eine Python-Datei, die eine lange HTML-Kette enthält. Wenn ich & amp; Führen Sie diese Datei / dieses Skript aus Ich erhalte diesen Fehler:
%Vor%Ich habe die Anweisungen befolgt und bin zu der vorgeschlagenen URL gegangen. Aber etwas wie das oben in meinem Skript zu setzen funktioniert immer noch nicht:
%Vor%Was kann ich tun, um zu verhindern, dass dieser Compilerfehler auftritt?
Um Probleme wie die in der Frage angegebene zu vermeiden, sollten Sie niemals andere Kodierungen als utf-8
für Python-Quellcode verwenden.
Dies ist die richtige Kopfzeile, um
zu verwenden %Vor% Nun müssen Sie die Datei von der Kodierung, die Sie eventuell haben, in utf-8
umwandeln, wahrscheinlich ist Ihr aktueller Texteditor dazu in der Lage.
Wenn Sie sich fragen, warum ich dies sage, denken Sie daran, dass es für einen Texteditor unmöglich ist, Ihre Nicht-Unicode-Codierung sicher zu erraten, da es für Nicht-Unicode keine Stückliste gibt. Aus diesem Grund verwenden die meisten anständigen Editoren UTF-8 als Standard, selbst wenn die Kodierung nicht spezifiziert ist. Und übrigens, die Kodierung, die im Header der Python-Datei angegeben ist, ist nur für Python, die meisten Editoren ignorieren, was Sie dort geschrieben haben.
Wie Sie sehen können, versucht Python, ein Zeichen über 128 mit ASCII
(nicht latin-1
) zu dekodieren. Ich bin nicht sicher, warum das passiert, aber ich interessiere mich nicht allzu sehr, weil es einen viel besseren Weg gibt, das Problem zu lösen.
Es muss sich am Anfang des Skripts befinden, das den Nicht-ASCII-Text enthält, und es muss mit der tatsächlichen Codierung der Datei übereinstimmen. \x92
ist CP1252, nicht Latin-1.
Wenn Sie nur daran interessiert sind, diesen Fehler loszuwerden, ohne sich mit den Einzelheiten zu befassen (die Sie aus den anderen Antworten auf dieser Seite erhalten können), können Sie Folgendes tun:
1) Kopieren Sie Ihren Code und fügen Sie ihn in Notepad ++
ein2) Wählen Sie Codierung - & gt; In UTF-8 kodieren
3) Wählen Sie Ansicht - & gt; Symbol anzeigen - & gt; Zeige alle Charaktere
Nun wäre es für dich sichtbar, welches Symbol das Problem verursacht (x92 wäre sichtbar). Ersetzen / Entfernen Sie es, um das Problem zu lösen.
Gefunden und hoffe, es ist hilfreich für die nächste Person: Ссылка
Codepunkt 0x92 (dezimal 146) ist das richtige einfache Anführungszeichen oder Apostroph (') in Windows-1252. Es ist ein ungültiges Zeichen in ISO 8859 und in UTF-8, da der 0x80-0x9F-Bereich für die C1-Steuerung reserviert ist Zeichen.
Ich bin mir nicht sicher, ob ich das Urheberrecht zerstören werde. Wenn ja, entfernen Sie bitte die Blockquote.
Die Kodierungsdeklaration zeigt an, dass Sie glauben, dass die Datei in der Latin-1-Kodierung ist, aber der Python-Interpreter findet ein Zeichen in oder nahe der Zeile 2509 in GlobalVars.py, was Sie nicht denken.
Sie sollten zuerst die Codierung von GlobalVars.py bestätigen. Ist es wirklich Latin-1?
Als nächstes sollten Sie die Zeichen in der Nähe von Zeile 2509 überprüfen. Sind sie auch lateinisch-1, oder wurden sie aus einer Webseite oder irgendwo anders ausgeschnitten und eingefügt (vielleicht sind dort UTF-8-Zeichen gemischt)?
Wenn Sie Zeichen in Ihrer Quelldatei haben, die nicht Ihrer Meinung nach sind, müssen Sie möglicherweise bereinigen Sie die Datei , bevor Sie weitermachen.
Eine einfache Umgehungslösung, wenn Ihre Datei wirklich in latin-1 ist, ist die HTML-Zeichenfolge mit ihrer Darstellung zu ändern.
Afaik:
%Vor%Wenn dein Charakter nicht Æ ist, dann ist deine Datei nicht in latin-1 codiert ;-) (und du könntest überprüfen, ob utf-8 / cp1292 besser als schneller Gewinn funktioniert)
BEARBEITEN : Natürlich möchten Sie Ihre ACTUAL-Dateicodierung überprüfen, bevor Sie es versuchen. Ich könnte falsch sein, nicht 100% sicher, dass x92 ist in Iso8859-1: nach dieser Seite , es scheint nicht definiert.
Tags und Links python unicode compiler-errors ascii