- - PR -
Javaプログラムでのファイルの文字コード判定
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-08 21:03
あるファイルの文字コードを自動で判定をするようなJavaプログラムを実装しようとしています。
しかしJavaプログラムでいくらロジックを組もうとしても、 FileInputStreamで読み込んだ時点でUnicodeに変換されてしまっており 元のファイルの文字コードの情報がとれません。 Pure JavaだけでOSファイルの文字コードの自動判定は不可能なのでしょうか? ※この要望をJavaで満たすためには、 Native言語で作成したバイナリをRuntime.exec、JNIなどで呼び出すしか方法はないと思っていますが、他に方法がありましたら、ご提示いただけると助かります。 |
|
投稿日時: 2006-02-08 21:44
FileInputStream#read はバイト単位でファイル内容を持って来るので、ファイルの内容はそのまま見えてます。
たとえば、EUC-JP で「テスト」と書かれたファイルに対して FileInputStream stream = new FileInputStream("HOGE.txt"); int c; while ((c = stream.read()) != -1) { System.out.print(" " + Integer.toString(c, 16)); } などとすると、a5 c6 a5 b9 a5 c8 などと EUC-JP のコードが取得できてます。 [ メッセージ編集済み 編集者: べう 編集日時 2006-02-08 21:51 ] |
|
投稿日時: 2006-02-08 21:51
この場合、文字コードの判定は、FileInputStreamから取得した
byte配列を使って、やるんだよ。 取得したbyte配列をStringに放り込んでから・・・なんてのは無理でっせ。 |
|
投稿日時: 2006-02-09 09:37
情報のご提供ありがとうございます。
FileInputStream#read()でbyte配列が取れるんですね。 この方法でやってみます。 |
1