質問: 以下の事について教えていただきたいのですが UNIX上で動いているjavaのバッチがあります。 そのバッチの中でファイル出力しているのですが、 出力されたファイルの文字コードがシフトJISになっています。 その対象のソースを見てもエンコードしている箇所は見当たりませんでした。 どうしてEUCではなくシフトJISになるのか不思議でなりません。 ちなみにファイル出力データのDBのキャラクタセットはシフトJISです。 これが関係しているのでしょうか。 インターネットで調べてもプラットフォームに依存すると書いてあるのでEUCになると思っているのですが・・・。 どなたか教えていただけないでしょうか。
回答: プラットフォームに依存するのは、文字コードを指定せずに、文字を文字として出力した場合だけ。 DBから得たデータをそのまま(文字扱いせずに)ファイルに流しているのかもしれない。 例えば、InputStream / OutputStreamに文字コードは存在せず、単なるバイト配列の流れでしかない。 これにInputStreamReader / OutputStreamWriterをかぶせた時に文字コードを指定する。 実は出力後にiconvなんかで変換してるだけってのは止めて欲しいところだけど。