将HXT解析的字符串编码为正确的UTF8字符串

时间:2014-04-15 13:39:18

标签: haskell utf-8 hxt

我正在使用hxt解析utf8编码的页面,简化的解析器示例:

names = multi (hasName "h1") >>> proc h1 do
  name <- getText <<< getChildren -< h1
  returnA name

在我尝试打印名字之前,一切正常:

*Main > n
"\208\152\208\182\208\190\209\128\208\176-\208\161"
*Main > :t n
n :: String
*Main > putStrLn n
ÐжоÑа-С
*Main > Data.Text.IO.putStrLn $ Data.Text.pack n
ÐжоÑа-С

我正在使用选项withInputEncoding "utf8"进行解析。 如何正确编码由hxt解析的字符串?

1 个答案:

答案 0 :(得分:0)

使用decodeUtf8中的Data.Text.Encodingpack中的Data.ByteString.Char8.pack结合使用:

*Main > import Data.Text.Encoding as E
*Main > import Data.ByteString.Char8 as C
*Main > import Data.Text.IO as T

*Main > T.putStrLn . E.decodeUtf8 . C.pack $ n

Ижора-С