使用Haskells Text.Pandoc进行字符编码的问题

时间:2015-12-23 14:08:27

标签: haskell encoding pandoc

我想使用Pandoc解析一个LaTeX-File并输出文本,如下所示:

import qualified Text.Pandoc as P
import Text.Pandoc.Error (handleError)

tex2Str = do 
           file <- readFile "test.tex"
           let p = handleError $ P.readLaTeX P.def file
           writeFile "A.txt" $  P.writePlain P.def p
           writeFile "B.txt" $  file

虽然文件B.txt中的编码似乎是&#34;对&#34; (即uft-8),文件A.txt中的编码不正确。

这里是文件的相应摘录:

A.TXT: ... Der _Crawler_ läuft hierbei über die Dokumentenbasis ...

B.txt: ... \usepackage[utf8]{inputenc} ... Der \emph{Crawler} läuft hierbei über die Dokumentenbasis ...

任何人都知道如何解决这个问题?为什么Pandoc使用错误的编码(我想,它默认使用utf-8)?

更新

我得到了(部分)解决方案:使用readFilewriteFile - 来自Text.Pandoc.UTF8的函数似乎解决了一些问题,即

import qualified Text.Pandoc as P
import Text.Pandoc.Error (handleError)
import qualified Text.Pandoc.UTF8 as UTF (readFile, writeFile)

tex2Str = do 
            file <- UTF.readFile "test.tex"
            let p = handleError $ P.readLaTeX P.def file
            UTF.writeFile "A.txt" $  P.writePlain P.def p
            UTF.writeFile "B.txt" $  file

然而,我仍然没有弄清楚实际问题是什么,因为Prelude.readFilePrelude.writeFile似乎都能发挥作用...

0 个答案:

没有答案