我使用Apache PDFBox建立pdf解析器,解析纯文本后,我运行了一些算法,最后输出了一个json文件。对于某些pdf文件,输出文件包含utf-8编码,对于其他pdf,它包含某种形式的latin-1编码(当在python中打开json文件时,空格显示为“ \ xa0”)。我认为这一定是字体或pdf其他特征的结果吗?

我的阅读纯文本的代码如下

PDDocument document = PDDocument.load(file);

//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();

//Retrieving text from PDF document
String text = pdfStripper.getText(document);

//Closing the document
document.close();


我试过只保存纯文本:

PrintWriter out = new PrintWriter(outPath + ".txt");
out.print(text);


如果将该纯文本文件读入dictionary,则即使在python中打开此纯文本文件也会产生“ \ xa0”字符而不是空格,从而产生以下结果:


  dict_keys(['1. \ xa0 \ lorem \ xa0ipsum','2. \ xa0 \ lorem \ xa0ipsum \ xa0 \ lorem \ xa0ipsum','3. \ xa0 \ lorem','4. \ xa0 \ lorem \ xa0ipsum' ,'5. \ xa0 \ lorem \ xa0ipsum'])


我想确保文本始终被编码为utf-8。我该怎么做呢?

最佳答案

我想确保文本始终被编码为utf-8。我该怎么做呢?


如果要确保PrintWriter使用UTF-8编码,请在构造函数中这样说:

PrintWriter out = new PrintWriter(outPath + ".txt", "UTF-8");

关于java - 如何设置PDFBox的字符编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54447903/

10-09 09:25