Char
ist der Typ für Unicode-Zeichen in Haskell, und String
ist einfach [Char]
(d. H. Eine Liste von Char
Elemente). Hier finden Sie einige einfache Code:Laufzeitausnahme beim Drucken eines Unicode-Zeichens
main = putStrLn "©" -- Unicode string
Dieser Code kompiliert in Ordnung, aber ich bekomme die Runtime-Ausnahme, wenn ich es laufen in der PowerShel.exe oder cmd.exe:
App. exe:: commitBuffer: ungültiges Argument (ungültiges Zeichen)
Warum passiert das? Seltsam genug, wenn ich das gleiche in C# zu tun, erhalte ich keine Ausnahme:
Console.WriteLine("©");
In .NET Zeichen sind zu Unicode. PowerShell oder cmd druckt c
statt ©
, aber zumindest bekomme ich keine Ausnahme. Wie kann ich meine Haskell-Programmdatei problemlos ausführen lassen?
Könnte sein, dass Haskell erfordert, dass das Programm in der Unicode-Shell ausgeführt wird. –
Meine Cmd-Shell druckt '" © "' fein aber würgt mit dem gleichen Fehler auf '" ഠഃ അ ഠൃ 3 "'. – chi
Möglicherweise nützlich: http://stackoverflow.com/questions/22349139/utf8-output-from-powershell Ich bin kein PowerShell oder C# -Experte, aber die Tatsache, dass einige Zeichen Ersetzung auftritt ("C" statt "©") Wenn Sie Ihr C# -Programm ausführen, wird möglicherweise angezeigt, dass PowerShell nicht auf UTF-8 eingestellt ist ... @chi Diese Unicode-Zeichenfolge wird unter Mac OS X einwandfrei ausgegeben. Ich benutze bash über Terminal, das UTF-8 verwenden soll. – Jubobs