haskell:输出非ascii字符

Ale*_*lex 7 windows haskell non-ascii-characters

我想在WinGHCi中输出非ascii字符,但这是我得到的:

Prelude> "?"
"\948"
Prelude> putStr "\948"
*** Exception: <stdout>: hPutChar: invalid argument (character is not in the code page)
Run Code Online (Sandbox Code Playgroud)

我在Windows XP上使用WinGHCi 7.0.3.我有什么办法让WinGHCi打印出一个漂亮的小三角洲?

pat*_*pat 1

适用于 OSX!

\n\n
Prelude> putStrLn "\\948"\n\xce\xb4\n
Run Code Online (Sandbox Code Playgroud)\n\n

听起来这是一个Windows问题,与haskell无关......

\n

  • GHCi 正在将字符提供给 Windows,而 Windows 抱怨它不知道如何处理它,因为它不在当前代码页中。GHCi 无法神奇地选择具有该字符映射的代码页。充其量,应该有一种方法可以通过 FFI 调用 [SetConsoleOutputCP](http://msdn.microsoft.com/en-us/library/windows/desktop/ms686036(v=vs.85).aspx) 函数,但决定权取决于您,而不是 GHCi。 (4认同)
  • 这怎么不是 Haskell 问题呢?当然,GHCi 应该能够与其底层平台正确连接。其他程序以某种方式实现了这一令人难以置信的壮举。 (3认同)