Haskell 在Mac OS上输出UTF-8字符串';s终端
我在haskell中得到了一个程序,它使用包Haskell 在Mac OS上输出UTF-8字符串';s终端,haskell,utf-8,macos,terminal,Haskell,Utf 8,Macos,Terminal,我在haskell中得到了一个程序,它使用包utf8 string输出utf-8,并且只使用这个包的输出函数 我将写入的每个文件的编码设置为: hSetEncoding myFile utf8 {- myFile may be stdout -} 但当我尝试输出时: alpha = [toEnum 0x03B1] {- α -} 我得到的不是Linux(或windows上的文件)上的漂亮字母,而是: α 奇怪的是,即使我尝试将输出写入一个文件,我也无法将mvim作为utf-8文件读回。
utf8 string
输出utf-8,并且只使用这个包的输出函数
我将写入的每个文件的编码设置为:
hSetEncoding myFile utf8
{- myFile may be stdout -}
但当我尝试输出时:
alpha = [toEnum 0x03B1] {- α -}
我得到的不是Linux(或windows上的文件)上的漂亮字母,而是:
α
奇怪的是,即使我尝试将输出写入一个文件,我也无法将mvim作为utf-8文件读回。是否有任何方法可以获得正确的行为您必须确保至少有两件事:
- 终端编码必须设置为UTF8:
- 该文件确实是用UTF8编码的(如果您在Linux上观察到正确的结果,应该是这样的)
utf8字符串
,在这个简单的例子中
import System.IO
main = do
out alpha stdout
alpha = [toEnum 0x03B1] {- α -}
out s handle = do
hSetEncoding handle utf8
hPutStrLn handle s
请让我知道这是否适用于您在OS X上的操作。请下次发布完整的代码——这会让我更容易帮助您。我认为您的意思是toEnum而不是来自Enum。将
utf8字符串
与GHC本机编码(设置句柄的编码)结合使用似乎会导致双重转义。在支持指定句柄编码之前,我只在早期GHCs上使用了utf8字符串
。您指的是哪个文件?输出文件还是源文件?您有输出文件吗?我以为输出在终端。。。输入文件必须用UTF8编码。但在你的例子中,我想问题在于终端的编码。实际上,删除utf8字符串消除了我的问题,我不会猜到。谢谢你的建议:)