chr 232 不返回字符 è

F. *_*Zer 1 haskell

chr 232回报的评估'\232'而不是'è'.

当然,我期待(chr . ord) 'è'回来'è'。相反,我得到了'\232'

有人可以解释这里发生了什么吗?

Wil*_*sem 5

Haskell中会显示为表示一个字符反斜杠(的\后跟与十进制码点对大多数非ASCII字符)。的表示一个的Char也将与单引号包围('…')。

如果要打印字符串的内容,可以使用putChar :: Char -> IO ()

Prelude Data.Char> putChar (chr 232)
èPrelude Data.Char> 
Run Code Online (Sandbox Code Playgroud)

或者您可以将它包装在一个单例列表中并使用putStrLn该字符打印一行:

Prelude Data.Char> putStrLn [chr 232]
è
Run Code Online (Sandbox Code Playgroud)