Windows haskell:输出非ascii字符
我想在WinGHCi中输出非ascii字符,但我得到的是:Windows haskell:输出非ascii字符,windows,haskell,non-ascii-characters,Windows,Haskell,Non Ascii Characters,我想在WinGHCi中输出非ascii字符,但我得到的是: Prelude> "δ" "\948" Prelude> putStr "\948" *** Exception: <stdout>: hPutChar: invalid argument (character is not in the code page) 前奏曲>“δ” "\948" 前奏曲>putStr“\948” ***异常::hPutChar:参数无效(字符不在代码页中) 我正在windows x
Prelude> "δ"
"\948"
Prelude> putStr "\948"
*** Exception: <stdout>: hPutChar: invalid argument (character is not in the code page)
前奏曲>“δ”
"\948"
前奏曲>putStr“\948”
***异常::hPutChar:参数无效(字符不在代码页中)
我正在windows xp上使用WinGHCi 7.0.3。
我该怎么做才能让WinGHCi打印出一个漂亮的小三角?这是WinGHCi的bug。使用GHCI(控制台,非GUI版本) UPD:这显然不完全正确(适用于我的希腊字母,而不是西里尔文)。适用于OSX
Prelude> putStrLn "\948"
δ
听起来这是一个与haskell无关的windows问题…您的控制台代码页是什么(使用
chcp
命令)?我有437,它可以工作。我有CP850,但我不能改变它。我在控制台中输入了CHCP437,但它始终保持在CP850。如果我将stdout设置为utf8,那么ghci会打印一些奇怪的字符,但不会打印增量。@Ingo:对我来说也不会,也会在W7上。@Ingo-Yay chcp 65001在Cygwin工作。你应该加上它作为答案。这怎么不是Haskell的问题呢?当然,GHCi应该能够正确地与其底层平台进行接口。其他程序以某种方式管理了这一不可思议的壮举。我想这不起作用,因为我目前的代码页。只是我不知道如何改变它,或者更好:如何让GHCi使用新的代码页。chcp命令无法解决问题。GHCi将字符赋予windows,windows抱怨它不知道如何处理,因为它不在当前代码页中。GHCi无法神奇地选择一个具有该角色映射的代码页。充其量,应该有一种通过FFI调用函数的方法,但这将取决于您,而不是GHCi。什么是FFl?我如何调用这个函数呢?外部函数接口,haskell代码调用其他语言编写的函数的一种方式。这是有案可查的。有一个维基页面。我从来没用过。你可以发布一个新问题。