サイトからの応答を読み取っているストリームがあります。私はそのストリームをテキストファイルのテキストに保存します。2つの異なるストリームからの2つの文字列を比較することは同じではありません。
これをもう一度実行して、同じサイトの文字列とファイルに保存されているテキストを比較すると、それらは異なると考えられます。
WinMergeのようなdiffツールで2つの文字列を比較すると、明らかに同じ点で違いが見つかります。
何が起こっていますか?彼らはどちらもデフォルトのUTF8エンコーダを使用しています。
私はこれを実行するのが難しいかもしれないことを感謝しますので、私はあなたのための実例を書いています。ここ
は一例であり:WinMergeのによって報告されるようにここ
var request = WebRequest.Create("http://www.google.com");
using (var response = request.GetResponse())
using (var body = response.GetResponseStream())
using (var googReader = new StreamReader(body))
using (var googFileStream = File.Open("goog.txt", FileMode.OpenOrCreate))
using (var fileReader = new StreamReader(googFileStream))
{
var googText = googReader.ReadToEnd();
var fileText = fileReader.ReadToEnd();
if (!string.Equals(googText, fileText))
{
googFileStream.Dispose();
using (var msnWriter = new StreamWriter(File.Open("goog.txt", FileMode.Create)))
{
msnWriter.Write(googText);
}
}
}
は明らかで '差' です。それは明らかにhtmlの間のポイントです。文字セット:
強調表示されたテキスト全体の画像を投稿できますか?それは他の場所かもしれません。上に進むべきことがなければ、私は、単一のエンコーディング内であっても、1つのスペースとして読まれる2つの異なるコードがあることを伝えることができます。基本的な "スペース"(10進コード32)と "非改行スペース"(コード255)があります。 「ユニットセパレータ」のような特定の制御コードは、テキストレンダラに応じてスペースとして読み取ることもできます。コードが異なる場合、見た目が同一であっても文字列は異なります。 – KeithS
2つのファイルを16進表示で表示して、そこにページが表示されていないことを確認できますか? – GrandMasterFlush
@KeithSオリジナルは巨大です - それはGoogleのホームページからのソースです。このファイルは、数秒前にサイトから来たもののコピーであることを忘れないでください。文字列を保存するときにスペースを非改行スペースに変換する方法で保存した可能性はありますか? – BritishDeveloper