java - 将unicode写入rtf文件

标签 java unicode encoding rtf dataoutputstream

我正在尝试将不同语言的字符串写入 rtf 文件。我尝试了一些不同的东西。 我在这里以日语为例,但我尝试过的其他语言也是如此。

public void writeToFile(){

    String strJapanese = "日本語";
    DataOutputStream outStream;
    File file = new File("C:\\file.rtf");

    try{

        outStream = new DataOutputStream(new FileOutputStream(file));
        outStream.writeBytes(strJapanese);
        outStream.close();

    }catch (Exception e){
        System.out.println(e.toString());
    }
}

我也试过:

byte[] b = strJapanese.getBytes("UTF-8");
String output = new String(b);

或更具体:

byte[] b = strJapanese.getBytes("Shift-JIS");
String output = new String(b);

输出流也有writeUTF方法:

outStream.writeUTF(strJapanese);

您可以通过 write 方法直接在输出流中使用 byte[]。除西欧语言外,以上所有内容都给我乱码。为了查看它是否有效,我尝试在 Notepad++ 中打开结果文档并设置适当的编码。我还使用了 OpenOffice,您可以在打开文档时选择编码和字体。

如果它确实有效但我的电脑无法正常打开它,有没有办法检查它?

最佳答案

默认情况下,JAVA 中的字符串是 UTF-8(unicode),但是当你想把它写下来时,你需要指定编码

try {
    FileOutputStream fos = new FileOutputStream("test.txt");
    Writer out = new OutputStreamWriter(fos, "UTF8");
    out.write(str);
    out.close();
} catch (IOException e) {
    e.printStackTrace();
}

引用:http://download.oracle.com/javase/tutorial/i18n/text/stream.html

关于java - 将unicode写入rtf文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894772/

相关文章:

linux - Liquidsoap标签编码

C#:如何确定我的编码是否正确

java - 如何从 java 对 Active Directory 进行用户身份验证?

java - 如何从 acroform 获取字体颜色?

java - 如何下载位于 S3 存储桶上的整个文件夹?

java - 使用 HttpURLConnection 将 XML 数据从 HTTP Java 客户端发送到 servlet 时出现问题

python - 将不同的编码转换为ascii

python - 打印时不会出现日语字符

mysql - MySQL Regexp 是否支持 Unicode 匹配

java - 将 int 转换为 char 然后再转换回 int - 并不总是给出相同的结果