windows - Haskell, WinX: UTF8 stdin forårsager problemer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Windows 10 og powershell, det ser ud til, at Haskell har nogle problemer med UTF-kodning fra stdin:


> chcp 65001
> stack ghci
...

> putStrLn "자"
자

> x <- getLine
자
> x
"EOT"

> interact id
자
╝

Bedste reference


Jeg formoder, at GHC opererer på en latin1-kodning (eller lignende), og putStrLn "자" kun arbejdet ved et uheld. Du kan tjekke dette som følger:


> import System.IO
System.IO> hGetEncoding stdin


Hvis dette svarer med UTF-8 er min hypotese forkert. Men hvis det svarer til noget andet end UTF-8, kan du udtrykkeligt erklære, hvilken kodning konsollen forventer med hSetEncoding:


System.IO> hSetEncoding stdin utf8


Du kan også gerne gøre det for stdout og stderr. Se dokumentationen for flere detaljer. [10]