4

我用java编写了一个android应用程序来获取用户答案并将它们保存在一个文件中。问题是这个文件保存在 utf-8 中。最终用户将在 IBM SPSS 中打开这些文件,这是一个只能读取 ANSI (windows-1252) 文件的 windows 应用程序。

如何在 ANSI 代码中创建文件以从 java-android 应用程序保存在 SD 卡中?

我想我知道要将字符串转换为 ANSI,我应该使用:

String unicode = new String(asciiBytes, "windows-1252");

那是对的吗?

我保存文件的代码是这样的:

File interviewFile = new File(placeOfSDD, fileName);
FileWriter writer = new FileWriter(interviewFile, true);
writer.append(textBody);
writer.flush();
writer.close();

“textBody”是要转换为ANSI的String,“interviewFile”也是要保存为ANSI的文件。

谢谢您的帮助!!

4

1 回答 1

11

字符串在 JVM 中表示为 Unicode。当你把它写出来时,你需要把它转换成合适的字符集。

为此,请使用OutputStreamWriter并指定Charset.

OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file, true), 
                                                   "windows-1252");
writer.append(textBody);
writer.close();

关于你的第一个问题:

我想我知道要将字符串转换为 ANSI 我应该使用:
String unicode = new String(asciiBytes, "windows-1252");
对吗?

给定一个表示“windows-1252”字符集中字符的字节数组,此代码将为您构造适当的 Java 字符串(在 JVM 内部表示为 Unicode)。这不是“将字符串转换为 ANSI”......它正在做相反的事情:将“windows-1252”转换为 Unicode。

于 2012-06-27T02:17:33.560 回答