Char
è il tipo per caratteri Unicode in Haskell e String
è semplicemente [Char]
(ovvero un elenco di articoli Char
). Ecco qualche semplice codice:Errore di run-time durante il tentativo di stampare un carattere Unicode
main = putStrLn "©" -- Unicode string
Questo codice compila bene, ma ho l'eccezione di runtime quando l'eseguo in PowerShel.exe o cmd.exe:
app. exe: commitBuffer: argomento non valido (carattere non valido)
Perché ciò accade? Stranamente, quando faccio lo stesso in C#, non ottengo alcuna eccezione:
Console.WriteLine("©");
In .NET, caratteri Unicode sono troppo. PowerShell o cmd stampe c
invece ©
, ma almeno non ottengo eccezione. Come posso far funzionare senza problemi il mio eseguibile Haskell?
Potrebbe essere che Haskell richiede che il programma venga eseguito nella shell Unicode. –
La mia shell cmd stampa '" © "' bene ma si strozza con lo stesso errore su '" ഠഃ അ ഠൃ 3 "'. – chi
Forse utile: http://stackoverflow.com/questions/22349139/utf8-output-from-powershell Non sono esperto di PowerShell o C#, ma il fatto che si verifichi una sostituzione di caratteri ("c" invece di "©") quando si esegue il programma C# potrebbe indicare che PowerShell non è impostato per utilizzare UTF-8 ... @chi Quella stringa Unicode viene stampata correttamente su Mac OS X; Uso bash tramite Terminal, che è impostato per utilizzare UTF-8. – Jubobs