4

这个问题是不言自明的。

我面临的问题是,我在网上找到的任何 Tika 示例代码都使用了 StringWriter,如下所示。如果我能以某种方式使用OutputStreamWriter,我可以指定编码没问题......任何帮助将不胜感激。

InputStream inStream = new FileInputStream(pathname);
StringWriter sw = new StringWriter();
SAXTransformerFactory factory = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
TransformerHandler handler = factory.newTransformerHandler();
handler.getTransformer().setOutputProperty(OutputKeys.METHOD,"html");
handler.getTransformer().setOutputProperty(OutputKeys.INDENT,"no");
handler.setResult(new StreamResult(sw));
parser.parse(inStream, handler, metadata, context);
4

2 回答 2

3

您可以通过元数据对象设置编码。我用过这个片段:

import org.apache.tika.metadata.Metadata;

Metadata metadata = new Metadata();
metadata.add(Metadata.CONTENT_ENCODING, DATAFILE_CHARSET);
String parsedString = tika.parseToString(inputStream, metadata);

默认情况下,tika 在解析 html 时会尝试确定编码本身。但有时这可能会导致错误。

于 2013-11-27T18:59:41.960 回答
-3

if you parse text , you can use traditional IO to specify encoding .

于 2013-09-19T06:25:49.763 回答