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

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

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

Re[6]: ファイル出力時文字化+NumFormatException


(過去ログ 76 を表示中)

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

■44572 / inTopicNo.1)  ファイル出力時文字化+NumFormatException
  
□投稿者/ ガランス (1回)-(2009/12/12(Sat) 17:48:32)

分類:[Java] 

OS:Vista 使用言語:Java 開発環境:Eclipse3.2

会話ゲームの一部で、
 1.テキストファイルから一行を読み取る
 2.行の先頭のトークンを切り取る
 3.切り取ったトークンを整数に変換する
というメソッド(@)があり、それとは別に

テキストファイルを出力するメソッド(A)
があるのですが、以下の問題が発生しました

T.テキストファイルを手動(メモ帳)で作成すると
  Aで出力する際に日本語が文字化けする

U.プログラム(FileOutputStream)でテキストファイルを作ると
  文字化けはしないが、@の3の手順で
  NumberFormatExceptionが発生する
(FileWriterで作成した場合も同じ結果でした)

「文字化け」と「Uのエラー」それぞれの解決法は
見つかったのですが、同時に解決する方法がわかりません
何かいい方法があったら教えてください


ーーーーー実行結果
(answerが手動で作ったファイル,testがプログラムから作ったファイル(出力結果))
(zeroは「String zero="0"」,sは切り取ったトークン (文字コード))

answer
0,&#65533;E&#65533;E&#65533;E,&#65533;E&#65533;E&#65533;E&#65533;H,&#65533;H,&#65533;H&#65533;H&#65533;H,
1,&#65533;&#834;&#65533;,
2,&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;,
zero:48
s:48

test
&#65279;0,・・・,・・・?,?,???,
1,はい,
2,いいえ,
zero:48
s:65279

Exception: java.lang.NumberFormatException: For input string: "&#65279;0"


ーーーーーソース
・@(try-catch 文内部)
FileInputStream fis=new FileInputStream(file);
InputStreamReader ir=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(ir);
StringTokenizer st;
String str,s;
		
while((str=br.readLine())!=null){
	int c;
	st=new StringTokenizer(str,",");
	s=(String)st.nextElement();

	String zero="0";
	System.out.println("zero:" + (int)(zero.charAt(0)));
	System.out.println("s:" + (int)(s.charAt(0)));

	c=Integer.valueOf(s).intValue();
	
	if(c==code){
		flag=true;
		break;
	}
}

・A(try-catch 文内部)
FileInputStream fis=new FileInputStream(file);
InputStreamReader ir=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(ir);
String s;
while((s=br.readLine())!=null){
	System.out.println(s);
}
			
br.close();
ir.close();
fis.close();


ーーーーーテキストファイルの中身(両方)
0,・・・,・・・?,?,???,
1,はい,
2,いいえ,

引用返信 編集キー/
■44574 / inTopicNo.2)  Re[1]: ファイル出力時文字化+NumFormatException
□投稿者/ gtk2k (125回)-(2009/12/12(Sat) 18:39:55)
Javaはあまり知らんが、
文字列から数値に変換する際には数字、"."、"-","0x"などの進数PreFix以外の文字が入ってるとだめだと思うが。

引用返信 編集キー/
■44575 / inTopicNo.3)  Re[2]: ファイル出力時文字化+NumFormatException
□投稿者/ ガランス (1回)-(2009/12/12(Sat) 19:32:38)
No44574 (gtk2k さん) に返信
> Javaはあまり知らんが、
> 文字列から数値に変換する際には数字、"."、"-","0x"などの進数PreFix以外の文字が入ってるとだめだと思うが。
>
返信ありがとうございます

それも考えられたので、
数値に変換する前の段階でsを出力してみたのですが
結果は 0 だけでした。


引用返信 編集キー/
■44576 / inTopicNo.4)  Re[3]: ファイル出力時文字化+NumFormatException
□投稿者/ gtk2k (126回)-(2009/12/12(Sat) 20:14:11)
もしかして、
&#65533ってところはこの掲示板で表示したエンコード文字化けであって本当は違う文字?
引用返信 編集キー/
■44614 / inTopicNo.5)  Re[4]: ファイル出力時文字化+NumFormatException
□投稿者/ ガランス (2回)-(2009/12/13(Sun) 23:11:55)
No44576 (gtk2k さん) に返信
> もしかして、
> &#65533ってところはこの掲示板で表示したエンコード文字化けであって本当は違う文字?

あっ、文字化けしてましたね、失礼しました
掲示板に貼り付けたときに文字化けしたようです
通常モードで投稿すれば大丈夫でしょうか?

ちなみに、
Eclipceの実行結果では&#65533の部分は「半角の□」になっていて、
testの0の前には文字はありませんでした(&#65279に相当するものは表示されていない)

引用返信 編集キー/
■44616 / inTopicNo.6)  Re[5]: ファイル出力時文字化+NumFormatException
□投稿者/ gtk2k (137回)-(2009/12/14(Mon) 01:08:41)
No44614 (ガランス さん) に返信
> ■No44576 (gtk2k さん) に返信
>>もしかして、
>>&#65533ってところはこの掲示板で表示したエンコード文字化けであって本当は違う文字?
>
> あっ、文字化けしてましたね、失礼しました
> 掲示板に貼り付けたときに文字化けしたようです
> 通常モードで投稿すれば大丈夫でしょうか?
>
> ちなみに、
> Eclipceの実行結果では&#65533の部分は「半角の□」になっていて、
> testの0の前には文字はありませんでした(&#65279に相当するものは表示されていない)
>

answerの本当の内容を手入力で入力してみて。
引用返信 編集キー/
■44651 / inTopicNo.7)  Re[6]: ファイル出力時文字化+NumFormatException
□投稿者/ ガランス (3回)-(2009/12/14(Mon) 23:43:18)
突然なのですが、偶然自己解決に至りました
読み込み時の文字コードの種類をいろいろ変更して試した結果
正常に動作するようになりました

gtk2kさん今までの返信ありがとうございました
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -