【问题标题】:How to change text encoding to utf-8 while using apache tika text parsing (most specifically for .txt files)如何在使用 apache tika 文本解析时将文本编码更改为 utf-8(最特别适用于 .txt 文件)
【发布时间】:2020-12-12 20:32:54
【问题描述】:

我正在使用 apache tika 进行文本提取。它在几乎所有文件类型上都可以正常工作,除非我尝试在带有中文 .txt 文档的中文机器上对其进行测试。我没有以 utf-8 编码格式保存文件。 Tika 开始解析错误的字符串字符。这似乎是一个编码问题,我尝试像这样设置编码类型 metadata.add(Metadata.CONTENT_ENCODING, "UTF_8") 仍然没有运气。我在 java 中看到了一些将文本从一种编码类型转换为另一种的方法,但前提是源编码类型已知。就我而言,我不确定客户端的编码类型,也不能强迫他使用 utf-8。请帮我解决这个问题! 在此先感谢:)

【问题讨论】:

    标签: java utf-8 character-encoding apache-tika


    【解决方案1】:

    我遇到了同样的问题,但是在将 Powerpoint 转换为文本时,我发现通过使用可以指定编码的正确 OutputStream,编码运行良好。 您尝试添加的元数据不会对转换产生任何影响,只是在 html 文件的标题中添加该行。

    这是我的代码:

    public String tranformPowerpointToText(File file) throws IOException, TikaException {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ToTextContentHandler toTextContentHandler= new ToTextContentHandler(byteArrayOutputStream, "UTF-8");
    
            AutoDetectParser parser = new AutoDetectParser();
    
            Metadata metadata = new Metadata();
            try (InputStream stream = new FileInputStream(file)) {
                parser.parse(stream, toTextContentHandler, metadata);
                return byteArrayOutputStream.toString();
            } catch (SAXException e) {
                e.printStackTrace();
            }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2011-01-19
      • 1970-01-01
      相关资源
      最近更新 更多