2011-02-01 8 views
3

C#のWebRequestに問題があります。それはGoogleのページです。Webサイトを読む際のエンコーディングの問題、3つの異なるエンコーディング

ヘッダ状態

text/html; charset=ISO-8859-1 

ウェブサイトの状態

<meta http-equiv=content-type content="text/html; charset=utf-8"> 

そして、私はSystem.Text.SBCSCodePageEncoding

Encoding.Defaultデフォルトを使用する場合、最後に私は、デバッガで期待された結果と同様に、正規表現を取得します

ここで私は何をしますか?これがどうやって起こるか、あるいは私がこの問題をどのように解決できるか、何かヒントがありますか?

実際のページのエンコーディングはUTF-8のようです。少なくともFFでは、Windows-Whateverのではなくで、UTF-8では正しく表示され、ではなく、のLatin1で正しく表示されます。

URLはthis

問題は€-signだけでなく、すべてのドイツ語のウムラウトです。

私は真剣に狂っているこの問題の助けを前にありがとう!

更新:それはすべて正常に動作します私は、出力文字列を

// create a writer and open the file 
TextWriter tw = new StreamWriter("test.txt"); 

// write a line of text to the file 
tw.WriteLine(html); 

// close the stream 
tw.Close(); 

経由。

だから、問題は、デバッガが正しいエンコーディングと正規表現を表示していないようです。

RegExをUTF-8として処理するようにC#に指示するにはどうすればよいですか?

+0

はあなたが別のエンコーディングから、あなたの文字列を変換するために、関連するエンコーディングクラスに 'GetBytesメソッド()'メソッドを使用してに見たことがありますか? – RobV

答えて

2

HTMLを解析するのではなく、なぜGoogle Query APIを使用しますか?あなたのコメントへの答えは:

  1. APIだけでなく、Googleデスクトップ のために働く正規表現を使用してHTMLを解析する前に、read this ;-)

    EDITはところで

    、。

  2. このエンコードの問題は、Googleのページ固有の問題ですか?
  3. これらのページのHTMLの微妙な変更や、Webサーバーから返送されたヘッダーの変更により、後で、実際にどのような問題が発生するのか、誰が知っているのでしょうか。 ウェブページは、コンピュータにはやさしくない人間の目に優しいとされています。フレンドリーであることが期待できるのは、ページの外観とレンダリングされたコンテンツだけです。基本的なHTML構造ではありません。 APIとは対照的に、コンピュータにやさしいとされるです。
+0

1)それはGoogleのデスクトップ用です 2)私は他のページも同様に手に入れる必要があります 3)エンコーディングの問題以外は完璧に動作します。 – Scoox

+0

@Scoox:ここには[correct](http://code.google.com/p/google-api-for-dotnet/)のリンク – abatishchev

+0

さん、Serge、 あなたのご意見が分かります。しかし、この場合、正規表現は本当に私のニーズに合っています。解析する必要があるのは約15ページしかないので、これらの正規表現を最新のものにすることは可能です。 HTML構造も同様に変わる可能性があります。 他のウェブサイト用のAPIはありません。したがって、セレクタのような正規表現やXSSを問わず、HTML解析は唯一の2つの解決策です。 など。ここで使用されているGoogle商品検索では、APIはありません。 とにかく、あなたは一般的に正しいです。 – Scoox

関連する問題