Haskell中如何将Unicode值–转换为对应字符?
在Haskell中获取'–'字符的正确方式
首先要明确:你要的'–'(短破折号,en dash)对应的Unicode码点是U+2013,十进制值为8211,你之前用的2013对应的是U+07DD(字符'ߝ'),这是码点记错导致的错误。
在Haskell里可以通过以下几种方式正确获取该字符:
直接写入字符:如果你的源码文件采用UTF-8编码(GHC默认支持),可以直接在字符串或字符字面量中使用该字符:
-- 输出字符串形式的短破折号 putStrLn "–" -- 输出字符形式的短破折号 print '–'使用十进制转义序列:利用正确的十进制码点8211:
putStrLn "\8211"使用十六进制转义序列:对应U+2013的十六进制写法:
putStrLn "\x2013"
注意:Haskell不支持Python式的\uXXXX转义格式,这也是你尝试时出现"lexical error in string/character literal at character 'u'"错误的原因,它的Unicode转义语法是\xXXXX(十六进制,最多4位)或\XXXXXX(十进制,最多6位)。
内容的提问来源于stack exchange,提问作者noatbfgtxa
相关产品推荐
相关产品推荐

