这个问题不言自明。
我面临的问题是,我在网上找到的任何 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);
最佳答案
您可以通过元数据对象设置编码。 我用过这个片段:
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 时尝试确定编码本身。 但有时这可能会导致错误。
关于java - 使用 Apache TIKA 解析文本时如何指定编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355441/