java - 使用 Apache TIKA 解析文本时如何指定编码?

标签 java parsing apache-tika

这个问题不言自明。

我面临的问题是,我在网上找到的任何 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/

相关文章:

php - 将 whois 返回的字符串转换为对象或数组

iPhone 转义字符串不起作用

java - 使用 Apache POI 来自 Excel 的 HTML 格式化单元格值

apache-spark - Spark 2.x + Tika : java. lang.NoSuchMethodError : org. apache.commons.compress.archivers.ArchiveStreamFactory.detect

java - 我如何使用java搜索用户确定的单词并计算文本文件中的出现次数?

java - unicode 字符串的 gson 序列化不起作用

java - 在 Java 中验证给定上下文无关语法的字符串

html - 如何解析一个html页面并使用html标签的类名或id取出文本?

java - Hibernate:无法从结果集中读取列值:无法转换为内部表示

java - 如何覆盖 Liferay ext-plugin 中的 portal-impl jar 类