当运行以下代码时:
或者,
并且,在之后,
当遇到这个输出时:
现在,我已经尝试了
没有
我的环境:
Windows 10 版本 10.0.17134 Build 17134
联想 ideapad 510-15IKB
BIOS 版本 LENOVO 3JCN30WW
GHCi v 8.2.2
如何解决这个问题?
注:以下操作序列会导致此问题: 1. 打开 cmd 2. 输入 chcp 65001 3. 输入 ghci 4. 输入 getLine >>= putStrLn 5. 输入 µ
但是以下操作则不会出现问题: 1. 搜索 ghci 2. 在 %PROGRAMS%\Haskell Platform\8.2.2\bin 打开 ghci.exe 3. 重复步骤 4-5
注意:%PROGRAMS% 不是真正的环境变量。
按要求,下面是 GHC.IO.Encoding.getLocaleEncoding 的输出结果:
此外,
do line <- getLine
putStrLn line
或者,
getLine >>= putStrLn
并且,在之后,
getLine >>= putStrLn
进入
µ
当遇到这个输出时:
⠀
现在,我已经尝试了
chcp 65001
,但它没有起作用,而stdin
的编码是utf8
。没有
putStrLn
的检查结果如下: getLine
µ
'\NIL'
我的环境:
Windows 10 版本 10.0.17134 Build 17134
联想 ideapad 510-15IKB
BIOS 版本 LENOVO 3JCN30WW
GHCi v 8.2.2
如何解决这个问题?
注:以下操作序列会导致此问题: 1. 打开 cmd 2. 输入 chcp 65001 3. 输入 ghci 4. 输入 getLine >>= putStrLn 5. 输入 µ
但是以下操作则不会出现问题: 1. 搜索 ghci 2. 在 %PROGRAMS%\Haskell Platform\8.2.2\bin 打开 ghci.exe 3. 重复步骤 4-5
注意:%PROGRAMS% 不是真正的环境变量。
按要求,下面是 GHC.IO.Encoding.getLocaleEncoding 的输出结果:
UTF-8
此外,
System.IO.hGetEncoding stdin
的输出为:Just UTF-8
(当使用chcp 65001
时)
编辑:字符为U+00B5。我使用的是德国键盘,系统区域设置为德国,语言设置为英语,键盘语言为带有德国布局的英语。
ghci
会话中,GHC.IO.Encoding.getLocaleEncoding
返回什么? - Daniel Wagner