作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 rtf 文件,其中包含一些带项目符号的文本,如下面的屏幕截图所示
我想连同项目符号一起提取数据,但是当我在控制台中打印时,我得到了垃圾值。如何从控制台打印完全相同的内容。我尝试的方式如下
public static void main(String[] args) throws IOException, BadLocationException {
RTFEditorKit rtf = new RTFEditorKit();
Document doc = rtf.createDefaultDocument();
FileInputStream fis = new FileInputStream("C:\\Users\\Guest\\Desktop\\abc.rtf");
InputStreamReader i =new InputStreamReader(fis,"UTF-8");
rtf.read(i,doc,0);
System.out.println(doc.getText(0,doc.getLength()));
}
控制台输出:
我假设垃圾值是由于控制台不支持字符集,所以我尝试生成一个 pdf 文件,但在 pdf 中我也得到相同的垃圾值。这是pdf代码
Paragraph de=new Paragraph();
Phrase pde=new Phrase();
pde.add(new Chunk(getText("C:\\Users\\Guest\\Desktop\\abc.rtf"),smallNormal_11));
de.add(pde);
de.getFont().setStyle(BaseFont.IDENTITY_H);
document.add(de);
public static String getText() throws IOException, BadLocationException {
RTFEditorKit rtf = new RTFEditorKit();
Document doc = rtf.createDefaultDocument();
FileInputStream fis = new FileInputStream("C:\\Users\\Guest\\Desktop\\abc.rtf");
InputStreamReader i =new InputStreamReader(fis,"UTF-8");
rtf.read(i,doc,0);
String output=doc.getText(0,doc.getLength());
return output;
}
最佳答案
不管你怎么说,我的猜测是这是一个控制台编码问题。
无论如何你可以很容易地检查它:
只需替换这一行:
System.out.println(doc.getText(0,doc.getLength()));
用这两行:
PrintStream ps = new PrintStream(System.out, true, "UTF-8");
ps.println(doc.getText(0,doc.getLength()));
这将强制控制台编码为 UTF-8。
如果仍然错误,我会怀疑您的文件不完全符合 rtf。
我做了一些测试,您的代码在 Linux 下运行良好(控制台代码,我没有尝试 pdf),但控制台本身是 UTF-8。
关于java - 如何从 RTF 文件中读取项目符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40617277/
我是一名优秀的程序员,十分优秀!