C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: [java]ファイル読み込み時の文字化けについて


(過去ログ 91 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■54541 / inTopicNo.1)  [java]ファイル読み込み時の文字化けについて
  
□投稿者/ 田中ソフィア (12回)-(2010/10/25(Mon) 21:37:12)

分類:[Java] 

いつもお世話になっております。田中ソフィアと申します。

ファイル読み込みで文字化けが発生してしまいます。(UNICODEで出力されている?)
色々と試したのですが、文字化けが直らないため
皆様にご協力頂こうと思い掲載させて頂きました。

■環境
・WindowsXP
・JVM:1.5(デフォルトエンコーディングの変更はなし)
・ファイルのエンコーディング(ISO-8859-1)
・確認環境はeclipseのコンソール画面

■ファイルの中身
日本語全角文字

■ソース(一部抜粋)
FileReader in = new FileReader(fileName);
BufferedReader br = new BufferedReader(in);
String line = br.readLine()

■出力結果(一部抜粋)
\\u30c7\\u30fc\\u30bf\\u306e\\u691c\\u7d22\\u306b

以上、よろしくお願いいたします。

引用返信 編集キー/
■54542 / inTopicNo.2)  Re[1]: [java]ファイル読み込み時の文字化けについて
□投稿者/ 魔界の仮面弁士 (1889回)-(2010/10/25(Mon) 23:10:26)
No54541 (田中ソフィア さん) に返信
> ■環境
> ・ファイルのエンコーディング(ISO-8859-1)
> ■ファイルの中身
> 日本語全角文字
まず前提条件がおかしい気がします。ISO-8859-1 には漢字やひらがなが含まれていないので、
仮名漢字テキストであるのなら、そのファイルのエンコードは ISO-8859-1 では無いハズですが…。


> ■出力結果(一部抜粋)
> \\u30c7\\u30fc\\u30bf\\u306e\\u691c\\u7d22\\u306b
この文字列は『データの検索に』でしょうか。

エンコードが不明なテキストファイルがあり、その内容が 4 バイトの
 1c,69,22,7d
だった場合、
 UTF-16 と仮定してデコードすると『検,索』の漢字 2 文字
 ISO-8859-1 と仮定してデコードすると『{FS},i,",}』の 制御文字1文字 + 英数3文字
ですね。デコードとエンコードが違っていれば、データは化けてしまいます。


> FileReader in = new FileReader(fileName);
java.io.FileReader だと、読み込み時の文字コードを明示的に指定できないようなので、

 InputStreamReader in = new InputStreamReader(new FileInputStream(fileName), charset );

を使ってみては如何でしょうか。
引用返信 編集キー/
■54555 / inTopicNo.3)  Re[2]: [java]ファイル読み込み時の文字化けについて
□投稿者/ 田中ソフィア (13回)-(2010/10/26(Tue) 11:57:41)
No54542 (魔界の仮面弁士 さん) に返信

ご返答頂きありがとうございます。

> まず前提条件がおかしい気がします。ISO-8859-1 には漢字やひらがなが含まれていないので、
> 仮名漢字テキストであるのなら、そのファイルのエンコードは ISO-8859-1 では無いハズですが…。
ご認識頂いたとおり、ファイルエンコーディングの指定に誤りがございました。
(ファイルをUTF-8に変更しました。)

>>FileReader in = new FileReader(fileName);
> java.io.FileReader だと、読み込み時の文字コードを明示的に指定できないようなので、
>
>  InputStreamReader in = new InputStreamReader(new FileInputStream(fileName), charset );
ファイル読み込みを上記メソッドに変更したところ、こちらの意図した通り動かせるようになりました。
InputStreamReader in = new InputStreamReader(new FileInputStream(fileName), "UTF-8" );

非常に助かりました。ありがとうございます。




解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -