0

メリーランド大学の FindBug プログラムを使用していますが、このエラーが発生します。

多数のプラットフォームで自分のコードをテストして動作するのに、なぜこのコードが悪い習慣なのか、改善するにはどうすればよいのでしょうか?

コードのスクリーンショット

4

4 に答える 4

4

エンコーディング (文字列をバイトに変換する方法) が指定されていないことを示しています。

トルコで作成したテキスト ファイルをウズベキスタンでロードすると、異なる結果が得られる可能性があります。代わりに (たとえば)、指定されたエンコーディングを使用して自分で文字列をバイトに変換することにより、エンコーディングを直接指定できます (例についてはString.getBytesを参照してください)。

于 2012-12-13T17:10:17.253 に答える
1

文字セットを指定する必要があります

OutputStreamWriterを使用できます

fileWriter = new OutputStreamWriter(new FileOutputStream(file),charset);
于 2012-12-13T17:16:07.983 に答える
0

FileWriterドキュメントを参照してください。

デフォルトの文字エンコーディングに依存することは、悪い習慣と見なすことができます。

于 2012-12-13T17:14:43.030 に答える
0

FileOutputStreamの代わりに を使用しFileWriterます。を使用してラップできますOutputStreamWriter。これにより、コンストラクターでエンコーディングを渡すことができます。

そうしないと、Jeff が言ったように、データが正しく読み込まれません。

OutputStream fout = new FileOutputStream("test.txt");  
OutputStream bout = new BufferedOutputStream(fout);  
OutputStreamWriter out = new OutputStreamWriter(bout, "UTF-8");
于 2012-12-13T17:14:50.550 に答える