【初心者】Java質問・相談スレッド94【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0817815
2006/12/08(金) 16:28:16以下のソースで試してみました。
----------------------------------------------------------
//ファイルオープン
fis = new FileInputStream(_file);
CharsetDecoder dec = Charset.forName("JISAutoDetect").newDecoder();
isw = new InputStreamReader(fis, dec);
br = new BufferedReader(isw);
//ファイル読み込み
String line = "";
while ((line = br.readLine()) != null) {
}
//ファイルクローズ(適当)
br.close();isw.close();fis.close();
//検出した文字コードを出力
System.out.println(dec.detectedCharset());
----------------------------------------------------------
これでEUCファイルを読み込むと、漢字も文字化けせずに読めたのですが、
dec.detectedCharset()の箇所で、
「java.lang.IllegalStateException: charset not yet detected」
と言うエラーになりました。
ヘルプには「IllegalStateException - 読み込みバイト数の不足のため、文字セットを特定できなかった場合」と書いてありますが、
読み込んだ内容は正しくEUCと判断しているようなので、読み込み不足はないと思うのですが。。
そもそも、br.readLine() で1行ずつ読み込んでいるのに、なぜEUCだとわかるのかがわかりません。なんでですかね?
■ このスレッドは過去ログ倉庫に格納されています