2011-09-26 86 views
1

我使用這個代碼:HttpWebRequest的一個Unicode字符

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
string result = null; 
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) 
{ 
    StreamReader reader = new StreamReader(resp.GetResponseStream()); 
    result = reader.ReadToEnd(); 
    reader.Close(); 
} 

result我得到這樣003cbr /003e003cbr /003e文本(我想這應該是2換行符代替)。我嘗試了2,3參數版本Streamreader,但字符串是相同的。 (請求返回一個json字符串)

爲什麼我得到這些字符,我該如何避免它們?

回答

3

目前還不清楚該文本是什麼,但您目前沒有指定編碼。服務器使用什麼內容編碼? StreamReader將默認爲UTF-8。

這聽起來像實際上你得到某種奇怪的編碼的HTML,如U + 003C是<和U + 003E是>,給人<br /><br />作爲內容。這不是JSON ...

兩個測試:

  • 使用WebClient.DownloadString,這將檢測正確的編碼使用
  • 看看獲得展示使用相同的URL在瀏覽器

編輯:好吧,現在我已經看到了文字,它實際上是得到了:

\u003cbr /\u003e 

\u這部分在這裏很重要 - 這是JSON的一部分,它指出接下來的四個字符構成UTF-16代碼單元的十六進制表示形式。

用於解析文本的任何JSON API都應該爲您執行無縫操作。

+0

'... { 「內容」: 「一些文字

」} ...'。這是JSON。我用每種編碼嘗試了Streamreader。 –

+0

@ e-MEE:啊,這樣文本就在那裏,但也有其他文本。這並不明確。當你說你看到「003cbr /」 - 你如何檢測?你在看結果是什麼? –

+0

好吧,實際上這個請求是一個Google+ API activities.list請求。活動內容包含諸如「003cbr /」 –