DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ASP.NETwebフォームでの文字化け

環境/言語:[OS:Windows xp 言語C#.NET Framework1.0 ]
分類:[ASP.NET]

はじめまして、私はコンピュータの専門学校に通う学生です。
パソコンは専門学校に入学してから始めました。早速ですが、今javaで作ったiアプリからC#のASP.NETで作ったWebフォームにhttp通信でURLの後ろにつけてデータを送りたいと考えています。(今はローカルネットで試しています)
まずjavaで
String dataString="?FullName="+URLEncoder.encode(sodata);
byte[] data=dataString.getBytes();
Connector.open("http://localhost/testsetuzoku/WebForm1.aspx"+dataString,Connector.READ_WRITE,true);
以下省略

というプログラムを作りました。ちなみに"sodata"には"テレビ;ON"という文字列が入っています。このデータを送りたいと思っています。
受け取り側のC#のASP.NETのWebフォームでは

private void Page_Load(object sender, System.EventArgs e)
{
TextBox1.Text = Request.QueryString["FullName"];
TextBox1.Text=HttpUtility.urlDecode(TextBox1.Text);
String path=Request.MapPath("test.txt");
StreamWriter writer=new StreamWriter(path);
writer.write(TextBox1.Text);
writer.close();
}
というプログラムを作りました。ファイルに書き出したのは内容を確認するためです。javaから"sodata"(テレビ;ON)を送ると文字化けをして"er;ON"となってしまいます。あとC#のASPのWebファームのプログラムで「TextBox1.Text=HttpUtility.urlDecode(TextBox1.Text);」の命令を書いても書かなくてもファイルに書き出されるのは"er;ON"です。iアプリでURLエンコードしているで表示されるのは"%xx・・・"という形ではないのかと思っているのですが、どうしてでしょうか?そしてどうしたら文字化けせずにできますか?アドバイスをお願いします。よろしくお願いします。
お世話になります。

■No13865に返信(kakeruさんの記事)
> はじめまして、私はコンピュータの専門学校に通う学生です。
> パソコンは専門学校に入学してから始めました。早速ですが、今javaで作ったiアプリからC#のASP.NETで作ったWebフォームにhttp通信でURLの後ろにつけてデータを送りたいと考えています。(今はローカルネットで試しています)
> まずjavaで
> String dataString="?FullName="+URLEncoder.encode(sodata);
> byte[] data=dataString.getBytes();
> Connector.open("http://localhost/testsetuzoku/WebForm1.aspx"+dataString,Connector.READ_WRITE,true);
> 以下省略
>
> というプログラムを作りました。ちなみに"sodata"には"テレビ;ON"という文字列が入っています。このデータを送りたいと思っています。
> 受け取り側のC#のASP.NETのWebフォームでは
>
> private void Page_Load(object sender, System.EventArgs e)
> {
> TextBox1.Text = Request.QueryString["FullName"];
> TextBox1.Text=HttpUtility.urlDecode(TextBox1.Text);
> String path=Request.MapPath("test.txt");
> StreamWriter writer=new StreamWriter(path);
> writer.write(TextBox1.Text);
> writer.close();
> }
> というプログラムを作りました。ファイルに書き出したのは内容を確認するためです。javaから"sodata"(テレビ;ON)を送ると文字化けをして"er;ON"となってしまいます。あとC#のASPのWebファームのプログラムで「TextBox1.Text=HttpUtility.urlDecode(TextBox1.Text);」の命令を書いても書かなくてもファイルに書き出されるのは"er;ON"です。iアプリでURLエンコードしているで表示されるのは"%xx・・・"という形ではないのかと思っているのですが、どうしてでしょうか?そしてどうしたら文字化けせずにできますか?アドバイスをお願いします。よろしくお願いします。

StreamWriter のコンストラクタに
↓こちらを使って、エンコーディング指定をされてはいかがでしょう。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemiostreamwriterclassctortopic6.asp

あと関係ないですけど、Java 側の変数 data が使われていない感じがするんですが...
はじめまして、アドバイスありがとうございます。
StreamWriter writer=StreamWriter(path,true,System.Text.Encodeing.Default);
と試したら、結果はやはり"er;ON"でした。DefaultのところをUnicodeやUTF-8にしたら文字化けをしてしまいました。
>あと関係ないですけど、Java 側の変数 data が使われていない感じがするんですが...

そうですね・・・・使ってないですね。惑わせるようなプログラムをしてすいません。
■No13865に返信(kakeruさんの記事)
> まずjavaで
> String dataString="?FullName="+URLEncoder.encode(sodata);

URLEncoder.encode の挙動については有名だと思いますが...
http://senrigan.ddo.jp/candid/urlencode.html
2005/11/25(Fri) 12:09:08 編集(投稿者)

お世話になります。

■No13867に返信(kakeruさんの記事)
板違いのような気もしますが、
Java のプログラムの内容と、それを動かしている環境を
教えていただけますか?

※追記
[「iアプリ プログラミング」(その10)]
http://www.geocities.jp/java_iappli/java99.htm
↑の HttpServlet を継承したクラスの中で、
デコード処理をやっているので、それを参考にされるとよいかもしれません。

[エンコーディング名別名一覧]
http://www2s.biglobe.ne.jp/~katsum/java/encoding.html

[Encodingクラスで扱えるエンコーディング名は?]
http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html
文字化けの原因になる箇所は何箇所もあるんだから、どこが原因なのかを把握するのが先だろね。
URLEncodeの部分は確かにあやしい。
はじめまして、じゃんぬねっと様、 はいこーん様
そして皆様こんばんは、返事遅れてすいません。

>板違いのような気もしますが、
Java のプログラムの内容と、それを動かしている環境を
教えていただけますか?

なおこ様、素直に話しますと今学校の友達とグループを組んでシステムを作成しています。そして私がc#のASP.NETでWebフォームを作成して、友達がJavaでiアプリを作成しています。のでjavaの環境が私にはよくわからないのです。申し訳ないです。なおこ様から教えていただいたサイトを参考に調べようと思っています。アドバイスありがとうございます。

>URLEncoder.encode の挙動については有名だと思いますが...

Javaやc#についての知識が低いのですいません。じゃんぬねっと様から教えていただいたサイトを参考に調べて試してみます。アドバイスありがとうございます。

>文字化けの原因になる箇所は何箇所もあるんだから、どこが原因なのかを把握するのが先だろね。
URLEncodeの部分は確かにあやしい。

そうですね。今一度プログラムをよく見て文字化けの原因になる箇所を探して見ます。ご指摘ありがとうございます。
■No13885に返信(kakeruさんの記事)
> そして私がc#のASP.NETでWebフォームを作成して、友達がJavaでiアプリを作成しています。
> のでjavaの環境が私にはよくわからないのです。申し訳ないです。

いやいや、聞けばいいよね?
> いやいや、聞けばいいよね?

こんばんは、
はいこーん様の言うとおりですね。
iアプリを作っているパソコンは、Javaのj2sdk1.3とDOJA3.5です。
もう少し自分達で研究して、どこが文字化けしているのか確認しようと思いますので今回は"解決"という形にさせてもらいます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板