使用特殊编码将Java String写入文件

gor*_*tde 3 java delphi file-io encoding

我有Java String ôð¤ Ø$î1<¨ V¸dPžÐ ÀH@ˆàÀༀ@~€4`,我想用ANSI编码写一个文件.

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output),"windows-1252"));
    try {   
        out.append(str);
    } finally {
        out.close();
    }
Run Code Online (Sandbox Code Playgroud)

调试器说str包含ôð¤ Ø$î1<¨ V¸dPÐ ÀH@àÀà¼@~4.只要我将其写入输出文件,该文件只包含?ÒÜ@4.那么我的方法写入文件有什么问题?

对不起这个奇怪的字符串 - 我试图在java中重写一个delphi 7函数.这些字符串是我得到的唯一样本.

Pet*_*rey 5

如果我跑

String text = "ôð¤ Ø$î1<¨ V¸dPžÐ ÀH@ˆàÀༀ@`~€4";
Writer writer = new OutputStreamWriter(new FileOutputStream("test.txt"), "windows-1252");
writer.append(text);
writer.close();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"), "windows-1252"));
String line = br.readLine();
br.close();
System.out.println(line.length() + ": '" + line + "' matches " + line.equals(text));
Run Code Online (Sandbox Code Playgroud)

它打印

32: 'ôð¤ Ø$î1<¨ V¸dPžÐ ÀH@ˆàÀༀ@`~€4' matches true
Run Code Online (Sandbox Code Playgroud)

所以翻译中没有字符丢失.


如果我将编码更改为"US-ASCII",我会得到以下输出

32: '??? ?$?1<? V?dP?? ?H@??????@`~?4' matches false
Run Code Online (Sandbox Code Playgroud)