'charmap' codec can't decode byte 0x8f in position 1342: character maps to <undefined>

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

‘charmap’ codec can’t decode byte 0x8f in position 1342: character maps to
Hallo,

integer.py und integer_test.py klappen problemlos, float.py läuft ebenfalls, aber float_test.py gibt unter jeder Teilaufgabe folgende Fehlermeldung aus:

============================================
Aufgabe 2a: Exponentialfunktion (2 Punkte)

Beim Laden des Moduls float ist ein Fehler vom Typ ‘‘charmap’ codec can’t
decode byte 0x8f in position 1342: character maps to ’ aufgetreten.
Diese Teilaufgabe enthält Fehler!

Laut Notepad++ haben alle 4 Dateien dieselbe Kodierung (UTF-8 ohne BOM), daher war meine Folgerung, dass float.py ein “verbotenes” Zeichen enthält und integer.py zufällig “sauber” ist.
Aber nachdem ich die komische Repräsentation des ü’s in über gelöscht hatte kamen immer noch dieselben Fehler… Welches Zeichen ist es??

Nachfragen bei Mitstudenten ergab, dass ich bei weitem nicht alleine mit dem Fehler bin :-/

Helfen Sie uns!! :frowning:

PS: Die anderen Dateien hab ich noch nicht probiert.


Hallo,

näheres googlen nach diesem Fehlertyp liefert verschiedene Ansätze, was da wahrscheinlich falsch läuft. Es stellt sich heraus, dass dieser Fehler meistens auf Windows-Rechnern auftritt, wenn das standardmäßige System-Encoding sich von der Datei unterscheidet.
Der Fehler ist also nicht etwa in eurer float.py, sondern tritt beim Öffnen eures Moduls im Testcase auf. Die betroffene Zeile ist

with open(spec.origin, 'r') as f:

Zeile 225 in der Datei [m]float_test.py[/m]. Das Internet schlägt hier vor einfach das Encoding der Datei explizit zu übergeben mit

with open(spec.origin, 'r', encoding="utf-8") as f:

Ich konnte dies leider aus Mangel eines Windows-Systems nicht selbst überprüfen. (Quelle ist unter anderem: https://www.pitt.edu/~naraehan/python3/mbb12.html)

Bei der Suche nach dem “verbotenen” Zeichen hat die Seite https://www.soscisurvey.de/tools/view-chars.php geholfen, welche non-printable Unicocde-Zeichen anzeigt, so dass man diese dann entfernen kann. Bei mir traf dies nur auf eine Zeile zu, Zeile 54 der Quellcodevorlage:

    [line1] = ax.plot(x,  f(x), 'o-', label="f(x) = sin(aπx)")

Man könnte hier einfach den Text im Label ersetzen durch irgendwas anderes, muss dabei aber aufpassen, da sich ein unsichtbares Zeichen mit versteckt.
Leute wurden bereits auf diesen Fehler aufmerksam gemacht, man bemüht sich ihn zu fixen. Sollte eine der beiden Methoden funktionieren, so wäre eine Rückmeldung cool, dass man eventuell weiter nach anderen Lösungsmöglichkeiten suchen könnte.


[quote=yq53ykyr] with open(spec.origin, 'r') as f: [/quote]

Ich finde Code, der Dateien öffnet/externe Strings interpretiert/rausschreibt, ohne ein Encoding anzugeben, immer fehlerhaft.
Tatsächlich verstehe ich nicht, warum so viele Programmiersprach-Bibliotheken das Encoding als optionales Argument annehmen und es nicht erzwingen.


Ich habe eine neue Version der Testsuite im Studon hochgeladen die explizit utf-8 encoding verwendet.

Kann ein Windows-Nutzer bestätigen, ob das das Problem löst?

1 „Gefällt mir“

Hallo,
ich habe das Problem auch gehabt und habe genau diese Zeile auch geändert. Ich habe das ganze nochmals getestet, indem ich das auf die CIP-Rechner hochgeladen habe, und da trat das Problem (mit der unmodifizierten) Datei nicht auf.

(Ich installiere mir jetzt mal doch mal so ein Linux.)

LG Gabriel

1 „Gefällt mir“