Java 8:如何将纯UTF-8 文本转换为RTF(符号> 127)?
Java 8: how to convert plain UTF-8 text into RTF (with symbols > 127)?
我发现很多“如何使用 RTFEditorKit 进行 RTF -> 纯文本”,但没有一个是“纯文本 -> rtf”。
我不会手动执行此操作,因为在我的情况下,我们必须将所有超过 128 的字符转换为十六进制字符串才能获得正确的 RTF 文件。我想用一些图书馆来做。
我正在尝试使用 RTFEditorKit 来完成:
String orig = "Hello Привет こんにちは";
InputStream is = new ByteArrayInputStream(orig.getBytes(StandardCharsets.UTF_8));
// String tmpStr = is.getText("UTF-8"); // here is correct tmpStr
RTFEditorKit rtfParser = new RTFEditorKit();
javax.swing.text.Document doc = rtfParser.createDefaultDocument();
rtfParser.read(is, doc, 0);
int docLen = doc.getLength(); // !!! here is docLen = 0
OutputStream os = new ByteArrayOutputStream();
rtfParser.write(os, doc, 0, docLen, );
但无法将纯文本读入 Document 对象。
我不确定我能否查明您的代码中哪里出了问题,但这对我有用。我将字符串插入 Document
:
String orig = "Hello Привет こんにちは";
RTFEditorKit rtfParser = new RTFEditorKit();
javax.swing.text.Document doc = rtfParser.createDefaultDocument();
doc.insertString(0, orig, null);
int docLen = doc.getLength();
OutputStream os = Files.newOutputStream(Paths.get("test.rtf"), StandardOpenOption.CREATE);
rtfParser.write(os, doc, 0, docLen);
我发现很多“如何使用 RTFEditorKit 进行 RTF -> 纯文本”,但没有一个是“纯文本 -> rtf”。 我不会手动执行此操作,因为在我的情况下,我们必须将所有超过 128 的字符转换为十六进制字符串才能获得正确的 RTF 文件。我想用一些图书馆来做。
我正在尝试使用 RTFEditorKit 来完成:
String orig = "Hello Привет こんにちは";
InputStream is = new ByteArrayInputStream(orig.getBytes(StandardCharsets.UTF_8));
// String tmpStr = is.getText("UTF-8"); // here is correct tmpStr
RTFEditorKit rtfParser = new RTFEditorKit();
javax.swing.text.Document doc = rtfParser.createDefaultDocument();
rtfParser.read(is, doc, 0);
int docLen = doc.getLength(); // !!! here is docLen = 0
OutputStream os = new ByteArrayOutputStream();
rtfParser.write(os, doc, 0, docLen, );
但无法将纯文本读入 Document 对象。
我不确定我能否查明您的代码中哪里出了问题,但这对我有用。我将字符串插入 Document
:
String orig = "Hello Привет こんにちは";
RTFEditorKit rtfParser = new RTFEditorKit();
javax.swing.text.Document doc = rtfParser.createDefaultDocument();
doc.insertString(0, orig, null);
int docLen = doc.getLength();
OutputStream os = Files.newOutputStream(Paths.get("test.rtf"), StandardOpenOption.CREATE);
rtfParser.write(os, doc, 0, docLen);