我需要用Java读取一些RTF文件。所以我得到的代码最初工作正常。但我的问题是:在阅读这些文件时是否可以设置格式(例如:UTF-8,UTF-16等)?
这里我发布了读取RTF文件的代码:
public static String rtf_read(String fileName) throws Exception, BadLocationException
{
JEditorPane p = new JEditorPane();
p.setContentType("text/rtf");
EditorKit rtfKit = p.getEditorKitForContentType("text/rtf");
rtfKit.read(new FileReader(fileName), p.getDocument(), 1);
rtfKit = null;
// convert to text
EditorKit txtKit = p.getEditorKitForContentType("text/plain");
Writer writer = new StringWriter();
txtKit.write(writer, p.getDocument(), 0, p.getDocument().getLength());
String documentText = writer.toString();
return documentText;
}
答案 0 :(得分:0)
我相信FileReader
正在使用默认编码。幸运的是,read()
方法也被重载以处理流 - 对于它们,您可以设置要使用的编码:
rtfKit.read(new FileInputStream(fileDir), StandardCharsets.UTF_8), ...)
答案 1 :(得分:0)
使用以下代码行对我有用:
FileInputStream is = new FileInputStream(rtfFilePath);
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader buffReader = new BufferedReader(isr);
rtfKit.read(buffReader, p.getDocument(), 0);