Not logged in. · Lost password · Register

Tobs40
Member since Oct 2017
12 posts
Subject: 'charmap' codec can't decode byte 0x8f in position 1342: character maps to <undefined>
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 <undefined>' 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!! :(

PS: Die anderen Dateien hab ich noch nicht probiert.
yq53ykyr
Member since Oct 2016
87 posts
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
  1. with open(spec.origin, 'r') as f:
Zeile 225 in der Datei float_test.py. Das Internet schlägt hier vor einfach das Encoding der Datei explizit zu übergeben mit
  1. 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.
Marcel[Inf]
#faui2k15, GTI-Tutor a. D.
Member since Nov 2015
394 posts
Quote by yq53ykyr:
  1. with open(spec.origin, 'r') as f:

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.
marcoheisig
Member since Apr 2017
46 posts
+1 sj
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?
gabriel2029
Member since Nov 2018
24 posts
+1 zge
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
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen