2013-12-11 3 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 저는이 문자들을 엑셀 시트에 직접 넣었습니다. 아무런 문제가 없습니다. 나는 코드와 프로그램 중단으로 그것을 할 수 없었습니다. 다시 추적하고 이것이 문제의 원인이되는 문자열이며 의심스러운 유일한 문자는 내 예제의 것입니다. – sora0419

답변

1

당신은 모든 비 ASCII 문자를 제거 시도 할 수 ...

나는 안토니와 워즈니악의 솔루션을 시도하고 작동하지 않았다.
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을했다 :

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

답장을 보내 주셔서 감사합니다. 나는 당신의 방법을 시도했고 그것은 여전히 ​​나에게 오류를주고있다. 내 업데이트를 참조하십시오. – sora0419

+0

ASCII 문자 0x10에서 넘어져서 특수 문자 (\ u0010)를 별도로 추가해야하는 것 같습니다. – barrowc

2

System.Text.Encoding.Convert

사용 예제를 참조하십시오.

+0

최상의 답변입니다. – drankin2112

+0

@ drankin2112 그는 야생에서 문자열 인코딩에 대해 잘 알고 있지는 않지만 유니 코드 문자를 제거하려고합니다. 즉, htmlText는 이미 유니 코드입니다. – Anthony

+0

당신은 착각하지 않았습니다. 나는 너무 빨리 말했습니다. 게시하기 전에 내 대답을 조사해야 할 것 같아요 :) – drankin2112