stu*_*uck 1 unicode character-encoding apache-tika
我正在使用org.apache.tika.Tika.parseToString()将文档转换为纯文本(即无格式文本)文件。我的应用程序可能需要转换不使用 Unicode 字符集的文档。例如,某些文档可能以Chinese GB2312字符集编码。如果 Tika 将输出重新编码为UTF-8. 这将需要 Tika 引用许多不同字符集和 Unicode 之间的映射,以便转换字符。
Tika 是否将非 Unicode 字符集文本转换为 Unicode 作为 的输出parseToString()?那里有很多字符集,所以如果蒂卡为多个字符集这样做,我会印象深刻。
更新:我能够使用一些非拉丁字符集(GB2312(中文)和 KOI8-R(俄语))创建几个不同的文件。Tika.parseToString()甚至无法检测到字符集或编码。我在 Tika 错误跟踪器上打开了一个问题:https : //issues.apache.org/jira/browse/TIKA-1262
在谈论 Apache Tika 中的字符集时,您需要以不同的方式考虑两种文件。一种基本上只是纯文本,另一种是更复杂的类型(包括二进制类型)
对于更复杂的文件,Tika 主要使用第三方库,这些库负责返回 Java Strings。这样做的确切方法将取决于所讨论的文件格式 - 有时文件格式将包括编码信息,其他时候它将以其支持的方式进行修复。无论哪种方式,Tika 都会获取 Java 字符串,并返回给您一个 Java 字符串。您选择如何对输出进行编码取决于您。(特别是对于 Windows 用户,请检查终端的编码和使用的字体。有很多“Tika 编码问题”实际上是人们未能正确设置输出的默认 Java 编码,或者没有 Unicode有能力的终端!)
对于纯文本文件,文件中没有编码信息,我们只有一堆字节。在这里,Apache Tika 使用许多EncodingDetector实例之一来进行检测。这些使用提示、n-gram、语言检测等,尝试根据给定的信息、文件中的字节模式等计算出最可能的文件编码。
EncodingDetector 的定义保存在 Tika-Core jar 中,但大多数实现都保存在 Tika-Parsers jar 中(并通过服务加载器方法加载,就像 Detectors 和 Parsers 一样)。主要在 SVN 中。如果您在那里查看,您将看到 Tika 可以检测到的主要编码列表。
最后一件事 - 编码检测仅对文本文件执行,而不对二进制类型文件执行。根据您调用 Tika 的方式,您可能需要对其进行调整和/或提供它是文本文件的提示,以便触发 EncodingDetector 逻辑。
| 归档时间: |
|
| 查看次数: |
8377 次 |
| 最近记录: |