2

我正在使用 WikiPrep 处理最新的 wiki 转储 enwiki-20121101-pages-articles.xml.bz2。而不是“使用 Parse::MediaWikiDump;” 我将其替换为“使用 MediaWiki::DumpFile::Compat;” 并对代码进行了适当的更改。然后,我跑了

perl wikiprep.pl -f enwiki-20121101-pages-articles.xml.bz2

我有一个错误

enwiki-20121101-pages-articles.xml.bz2:1: parser error : Document is empty
BZh91AY&SY±H¦ÂOÿ~Ð`ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿ½ÿýþdß8õEnÞ¶zëJ¨Eà®mEÓP|f÷Ô
^

我猜转储中包含一些非 utf8 字符。所以我跑了

iconv -f utf8 -t utf8 enwiki-20121101-pages-articles.xml.bz2

确实,我遇到了一些错误

BZh91AY&SYiconv: illegal input sequence at position 10

所以,我的问题是 wiki 转储的编码格式是什么,如果我想将其转换为 utf-8,我该怎么办?或者应该如何修改 wikiprep.pl 以避免此类问题。

非常感谢

-- [已解决] 我应该先解压文件。

4

1 回答 1

1

您在文件的压缩 (bz2) 版本上运行 iconv,而不是在 XML 文件本身上运行。先解压。

(发布 borrible 的答案,以便这个已解决的问题不会被列为未回答。)

于 2015-04-06T11:46:37.533 回答