14

我想制作一个 Haskell 脚本来读取我的 /home 文件夹中的文件。但是有很多以汉字命名的文件,Haskell 和 Ghci 无法管理。似乎 Haskell 和 Ghci 不擅长显示 UTF-8 字符。

这是我遇到的:

Prelude> "让Haskell或者Ghci能正确显示汉字并且读取汉字命名的文档"

"\35753Haskell\25110\32773Ghci\33021\27491\30830\26174\31034\27721\23383\24182\19988\35835\21462\27721\23383\21629\21517\30340\25991\26723"
4

2 回答 2

26
Prelude> putStrLn "\35753Haskell\25110\32773Ghci\33021\27491\30830\26174\31034\27721\23383\24182\19988\35835\21462\27721\23383\21629\21517\30340\25991\26723"
让Haskell或者Ghci能正确显示汉字并且读取汉字命名的文档

GHC 处理 unicode 就好了。这些是你应该知道的事情:

它使用您的系统编码在从控制台读取或写入控制台时从字节转换为字符并返回。由于它在您的示例中正确地完成了从字节到字符的转换,我想说您的系统编码设置正确。

showon 函数String具有有限的输出字符集。GHCI 使用该show函数打印计算表达式的结果,并使用该print函数将传入的值转换为String表示形式。

和函数用于实际将 a 写入控制台putStr,就像提供给它们一样。putStrLnString

于 2012-12-26T11:21:01.490 回答
0

感谢卡尔,我用putStrLn它来包装我的功能:

ghci> let removeNonUppercase st = [c | c <- st, c `elem` ['А'..'Я']]
ghci> putStrLn (removeNonUppercase "Ха-ха-ха! А-ха-ха!")
ХА

一切正常!

于 2015-07-31T13:38:52.177 回答