4

ユーザーの回答を取得してファイルに保存するために、JavaでAndroidアプリを作成しました。問題は、このファイルが utf-8 で保存されていることです。エンド ユーザーは、ANSI (windows-1252) でのみファイルを読み取ることができる Windows 用アプリケーションである IBM SPSS でこれらのファイルを開きます。

java-androidアプリからSDカードに保存するANSIコードでファイルを作成するにはどうすればよいですか?

文字列を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 に変換する文字列で、「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 に答える