- - PR -
[C#]GetResponseStreamで得たストリームデータの文字コード判定について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-07 22:05
GetResponseStreamメソッドにてインターネットリソースから取得したストリームデータの文字コード自動判定で悩んでいます。
C#における文字コードの自動判定については、 <dobon.net>-<文字コードを判別する> http://dobon.net/vb/dotnet/string/detectcode.html にて勉強させていただきました。 System.IO.FileStream fs = new System.IO.FileStream( TextBox1.Text, System.IO.FileMode.Open,System.IO.FileAccess.Read); byte[] bs = new byte[fs.Length]; //byte配列に読み込む fs.Read(bs, 0, bs.Length); fs.Close(); ですが、上記のプログラムをGetResponseStreamメソッドに当てはめて作成することで行き詰まってしまいました。GetResponseStreamを使って、TextBox1.Textに代入する文字列を、 StreamReader reader1 = new StreamReader(StreamData,Encoding.GetEncoding("Shift_JIS")); TextBox1.Text=reader1.ReadToEnd(); と取得しているため、もとのストリームデータが失われどうしても、正しい文字コード判定ができなくなってしまいます。どのようにすればいいのでしょうか? | ||||
|
投稿日時: 2006-02-07 22:19
処理の最初から、最後までバイナリデータとして扱ってください。文字列ではないものを、文字列に変換して扱おうとした時点で(Unicodeに変換しようとした時点で)、データは破壊されもとの意味を失ってしまいます。質問の内容からも、その事は承知しているのですよね。なら、そうしないようにしてください。 それとも何か理由があって、TextBox1.Textに代入することや、代入したことでデータが失われることを避けられないのですか? 仮にそうだとしてもShiftJISとして文字コードを破壊するのではなく、BASE64など可逆性を確保した形で変換して表示すればよいですよね。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2006-02-09 04:00
「甕星」さん、的確なアドバイスありがとうございます。
思い通りにプログラムが動作し、文字コードを自動判別することができました。 しようもない質問にも、親切に教えていただいたこと感謝します。 |
1