在Mac OS终端上输出UTF-8字符串

时间:2010-05-29 16:40:38

标签: haskell utf-8 macos terminal

我在haskell中使用包utf8-string输出utf-8并仅使用此包的输出函数。

我以这种方式设置我写的每个文件的编码:

hSetEncoding myFile utf8
{- myFile may be stdout -}

但是当我尝试输出时:

alpha = [toEnum 0x03B1] {- α -}

而不是我在Linux上(或在Windows上的文件中)得到的漂亮的字母,我得到以下内容:

α 

奇怪的是,即使我尝试在文件上写输出,我也无法将其作为utf-8文件用mvim读回来。有没有办法获得正确的行为

2 个答案:

答案 0 :(得分:3)

刚才在GHC 6.12上尝试过这个。新的编码功能消除了这一需求 在这个简单的例子中utf8-string

import System.IO

main                         =  do
  out alpha stdout

alpha                        =  [toEnum 0x03B1] {- α -}

out s handle                 =  do
  hSetEncoding handle utf8
  hPutStrLn handle s

如果这对您在OS X上有效,请告诉我。请在下次发布完整代码 - 这会让我更容易为您提供帮助。

答案 1 :(得分:1)

至少有两件事你必须确定:

  • 终端编码必须设置为UTF8:

alt text http://files.droplr.com.s3.amazonaws.com/files/35740123/15WO3z.Picture%2026.png

  • 该文件确实以UTF8编码(如果您在Linux上观察到正确的结果,应该是这样)