Haskell,WinX:UTF8 stdin导致问题

我使用Windows 10和PowerShell,似乎Haskell从标准input使用UTF编码有一些问题:

> chcp 65001 > stack ghci ... > putStrLn "자" 자 > x <- getLine 자 > x "\EOT" > interact id 자 ╝ 

我怀疑GHC正在使用latin1编码(或类似的), putStrLn "자"只是偶然的工作。 你可以检查如下:

 > import System.IO System.IO> hGetEncoding stdin 

如果这个答复与UTF-8我的假设是错误的。 但是,如果使用UTF-8以外的其他方式回复,则可以使用hSetEncoding显式声明控制台所期待的编码:

 System.IO> hSetEncoding stdin utf8 

你可能也想为stdoutstderr做这个。 请参阅文档了解更多详情。