Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Haskell或ghci能够显示汉字并运行汉字命名脚本?_Haskell_Unicode_Character_Cjk_Ghci - Fatal编程技术网

如何使Haskell或ghci能够显示汉字并运行汉字命名脚本?

如何使Haskell或ghci能够显示汉字并运行汉字命名脚本?,haskell,unicode,character,cjk,ghci,Haskell,Unicode,Character,Cjk,Ghci,我想制作一个Haskell脚本来读取my/home文件夹中的文件。但是,有许多文件使用汉字命名,Haskell和Ghci无法管理。Haskell和Ghci似乎不擅长显示UTF-8字符 以下是我遇到的情况: Prelude> "让Haskell或者Ghci能正确显示汉字并且读取汉字命名的文档" "\35753Haskell\25110\32773Ghci\33021\27491\30830\26174\31034\27721\23383\24182\19988\35835\21462\27

我想制作一个Haskell脚本来读取my/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"
GHC处理unicode非常好。以下是你应该知道的事情:

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

String
上的
show
函数的输出字符集有限。GHCI使用
show
函数打印表达式求值的结果,
print
函数将传入的值转换为
字符串
表示


putStr
putStrLn
函数用于将
String
完全按照提供给它们的方式写入控制台。

多亏了卡尔,我使用了
putStrLn
作为我功能的包装:

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

一切正常!

这并不能真正回答您的问题,但我要说明的是,使用
putStrLn
和朋友打印字符串的程序不会出现此问题。此外,可能对您有所帮助。我尝试了“hGetLine h>>=hPutStr g”与目标g对应的文件确实得到了正确的内容。但是ghci不能正常显示汉字。@user1926094:与其说是“不能”,不如说是“不”。它选择对其进行转义,因为转义版本不能被您的终端、字体或其他任何东西弄乱。
ghci> let removeNonUppercase st = [c | c <- st, c `elem` ['А'..'Я']]
ghci> putStrLn (removeNonUppercase "Ха-ха-ха! А-ха-ха!")
ХА