Haskell,WinX:UTF8 stdin导致问题

时间:2017-08-30 16:25:38

标签: windows haskell utf-8

我使用windows 10和powershell,看起来Haskell在stdin上有一些UTF编码问题:

> chcp 65001
> stack ghci
...

> putStrLn "자"
자

> x <- getLine
자
> x
"\EOT"

> interact id
자
╝

1 个答案:

答案 0 :(得分:1)

我怀疑GHC正在运行latin1编码(或类似的),而putStrLn "자"只能偶然使用。您可以按如下方式检查:

> import System.IO
System.IO> hGetEncoding stdin

如果回复UTF-8我的假设是错误的。但是,如果它使用UTF-8之外的其他内容进行回复,则可以使用hSetEncoding显式声明控制台所期望的编码:

System.IO> hSetEncoding stdin utf8

您可能还想对stdoutstderr执行此操作。有关详细信息,请参阅the documentation