#java #utf-8 #character-encoding #apache-tika
#java #utf-8 #кодировка символов #apache-tika
Вопрос:
Я использую apache tika для извлечения текста. Он отлично работал почти со всеми типами файлов, если только я не пытался протестировать его на китайской машине с документом .txt, написанным на китайском языке. Я не сохранил файл в формате кодировки utf-8. Tika начал разбор неправильных символов строки. Похоже, это проблема с кодировкой, я попытался установить тип кодировки, подобный этому metadata.add(Metadata.CONTENT_ENCODING, "UTF_8")
, но безуспешно. Я видел некоторые методы в java, которые преобразуют текст из одного типа кодировки в другой, но только если известен тип исходной кодировки. В моем случае я не уверен в типе кодировки клиента и не могу заставить его использовать utf-8. пожалуйста, помогите мне с этим!! Заранее спасибо 🙂
Ответ №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();
}
}