2013-12-11 112 views
0

我寫了一個程序來抓取網站以獲取數據並輸出到Excel表。該程序是使用Microsoft Visual Studio 2010用C#編寫的。去掉Excel表中的非法字符

對於大多數情況下,從網站獲取內容,解析和存儲數據都沒有問題。

但是,一旦我會遇到問題,說有非法字符(如),防止輸出到excel文件,這會導致程序崩潰。 我也手動到網站上,發現其他非法字符,如Ú

我試圖做一個.Replace()但代碼似乎無法找到這些字符。

string htmlContent = getResponse(url); //get full html from given url 
string newHtml = htmlContent.Replace("▶", "?").Replace("Ú", "?"); 

所以我的問題是,有沒有辦法從html字符串中去掉所有這些類型的字符? (網頁的html)下面是我得到的錯誤消息。

我想安東尼和沃茲的解決方案,沒有工作......

enter image description here

+0

Excel允許使用這些字符。 –

+0

@JoelCoehoorn我把這些字符直接放在excel表單中,它沒有問題。我無法通過代碼和程序中斷來實現,我追溯到這是導致問題的字符串,唯一可疑的字符是我的示例中的字符。 – sora0419

回答

1

你可以嘗試剝離所有非ASCII字符。

string htmlContent = getResponse(url); 
string newHtml = Regex.Replace(htmlContent, @"[^\u0000-\u007F]", "?"); 
+0

感謝您的回覆。我嘗試了你的方法,它仍然給我錯誤。請參閱我的更新。 – sora0419

+0

看起來它正在摔倒在ASCII字符0x10上,因此可能需要爲該特定字符添加一個單獨的替換(\ u0010) – barrowc

2

System.Text.Encoding.Convert

用法示例:

var htmlText = // get the text you're trying to convert. 

var convertedText = System.Text.Encoding.ASCII.GetString(
    System.Text.Encoding.Convert(
     System.Text.Encoding.Unicode, 
     System.Text.Encoding.ASCII, 
     System.Text.Encoding.Unicode.GetBytes(htmlText))); 

我用字符串▶Hello World測試這一點,它給了我?Hello World

+0

看起來是最佳答案。 – drankin2112

+0

@ drankin2112它是我的理解,他希望去掉Unicode字符,此時'htmlText'已經是Unicode了 - 儘管我對字符串編碼不是很瞭解,所以我可能會誤會。 – Anthony

+0

你沒錯,我說的太快了。我想我應該在發帖之前調查我的答案:) – drankin2112