はバイト(文字ではない)InputStream
を読み取るので、あなたが言うとき私は仮定します:
javaiostreamを使用してファイルを開くと
...つまり、「Javaを使用してファイルを開いたとき」Reader
という意味です。
編集:あなたのコメントはあなたがこれをしていると言っています:
new BufferedReader(new FileReader(file));
AnInputStreamReader
には、文字エンコードを設定できるコンストラクタがあります。指定しない場合は、プラットフォームのデフォルトが使用されます。プラットフォームのデフォルトがユニコードになる可能性は低いです(私のMacbookでは「US-ASCII」に設定されています)。
文字エンコードを設定するには、(プラットフォームのデフォルトのエンコードを使用するFileReader
ため)それを行うのではなく、中間入力ストリームリーダーを作成する必要があります。FileReader
ファイルがUTF-8を使用してエンコードしていると仮定すると、次を使用します。
new BufferedReader(new InputStreamReader(new FileInputStream(file),
Charset.forName("UTF-8")));
または、JVMに引数を指定して、プラットフォームのデフォルトを変更することもできます。詳細については、この回答を参照してください。ただし、基本的な考え方は、file.encoding
Javaシステムプロパティを設定することです。リンクされた回答は、これを達成するためのいくつかの方法を提供します。
さらなる編集:
PSSまた、結果をSQLテキストファイルとして出力したいので、OSがäを正しく区別することが重要です。
OSはこれとは何の関係もありません。ファイルシステムはバイトをシャッフルしているだけです。これらのバイトがどのように解釈されるかは、完全にそれらのファイルを読み取っているアプリケーション次第です。この回答は、Javaプログラムにバイトを正しく解釈させる方法を示しています。データベースがバイトを正しく解釈できるようにするには、データベースのエンコーディングを構成する必要があります。