代码之家  ›  专栏  ›  技术社区  ›  Raoul Supercopter

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

  •  3
  • Raoul Supercopter  · 技术社区  · 14 年前

    我有一个haskell程序,用这个包输出utf-8 utf8-string 并且只使用这个包的输出函数。

    我将写入的每个文件的编码设置为:

    hSetEncoding myFile utf8
    {- myFile may be stdout -}
    

    但当我尝试输出时:

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

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

    α 
    

    奇怪的是,即使我试图将输出写到一个文件上,我也不能用MVIM将其作为一个UTF-8文件读回来。有什么方法可以得到正确的行为吗

    2 回复  |  直到 14 年前
        1
  •  3
  •   solidsnack    14 年前

    刚刚在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
    

    如果这在OSX上对您有用,请告诉我。下次请发布完整的代码——这会使我更容易帮助您。

        2
  •  1
  •   Olivier Verdier    14 年前

    至少要确保两件事:

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

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

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