Ich habe den folgenden Code, der funktioniert, es sei denn, die Datei hat utf-8
characteres:
Mit utf-8 Charakteren bekomme ich das:
hGetContents: invalid argument (invalid byte sequence)
Da die Datei, mit der ich arbeite, UTF-8
-Zeichen hat, möchte ich diese Ausnahme behandeln, um die aus Ref
importierten Funktionen wiederzuverwenden, falls möglich.
Gibt es eine Möglichkeit, eine UTF-8
-Datei als IO String
zu lesen, damit ich meine Ref
-Funktionen wiederverwenden kann? Welche Änderungen muss ich an meinem Code vornehmen? Danke im Voraus.
Ich füge die Deklarationen der Funktionen von meinem Ref
-Modul an:
seit dem Auftakt:
%Vor%Danke für die Antworten, aber ich habe die Lösung selbst gefunden. Tatsächlich hat die Datei, mit der ich gearbeitet habe, diese Kodifizierung:
%Vor%Also mit dieser Datei mit meinem Haskell-Code zu arbeiten Es sollte stattdessen diese Kodierung haben:
%Vor% Sie können die Dateicodierung mit dem Dienstprogramm file
wie folgt überprüfen:
Um die Dateicodierung zu ändern, folgen Sie den Anweisungen dieses Links !
Dies kann nur mit GHCs grundlegendem (aber vom Standard erweitertem) Modul System.IO
durchgeführt werden, obwohl Sie dann mehr Funktionen verwenden müssen:
Verwenden Sie System.IO.Encoding .
Der Mangel an Unicode-Unterstützung ist ein bekanntes Problem mit der Standard-Haskell IO-Bibliothek.
%Vor%