2010-06-12 3 views
4

인터넷에서 페이지를 다운로드하는 다운로더 프로그램이 있습니다. 각 페이지의 인코딩이 다르며 일부는 UTF-8이고 일부는 유니 코드입니다. 예 : 'a'문자를 표시하는 a; 이 문자로 가득 찬 페이지.이 인코딩을 일반 텍스트로 변환해야합니다.UTF-8을 HTML 엔터티의 텍스트로 변환하는 방법은 무엇입니까?

나는 C#에서 UnicodeEncoding 클래스를 사용했지만 도움이되지 않습니다.

어떻게이 인코딩을 실제 문자로 디코딩 할 수 있습니까? 이것을 변환하는 클래스 또는 메소드가 있습니까?

감사합니다.

+0

제쳐두고 : 인코딩이없는 "일반 텍스트"와 같은 것이 없습니다. 강력 추천 : http://www.joelonsoftware.com/articles/Unicode.html – Alex

+0

친애하는, 케니 숙제를하고 질문 제목을 수정하십시오. - UTF8은 유니 코드를 인코딩하는 여러 방법 중 하나입니다. 또한 이것들은 일반 텍스트와 같은 것이 아닙니다. 아마 ANSI 또는 ASCII라고 말하고 싶을 것입니다. 이 경우 데이터 손실 없이는 불가능합니다. – sorin

답변

6

HTML로 인코딩 됨. 시도하십시오 HtmlDecode? (System.Web.dll에 대한 참조가 필요합니다)

1

HTML/XML 이스케이프와 UTF-8/유니 코드 사이에 혼란스러워집니다.

페이지가 유효한 XML 인 경우 수명이 더 짧아집니다. 다른 XML 문서로 구문 분석 한 다음 관련 텍스트 노드를 가져올 수 있습니다. 모든 XML 이스케이프는 얻을 때 "이스케이프 처리되지 않음"이됩니다. 텍스트

HTML이 임의적이며 (아마도 유효하지 않은) HTML 인 경우 수명이 조금 더 어려워집니다. 먼저 올바른 HTML로 정규화 한 다음 구문 분석하고 텍스트 노드를 다시 요청할 수 있습니다.

보다 구체적인 예를 들어 주시면 조언하기가 더 쉽습니다.

다른 답변에서 제안 된 방법이 모두 필요할 수도 있습니다. 그러나 먼저 어떤 일이 벌어지고 있는지 이해해야합니다. 예를 들어, 에만의 HTML 조각을 디코딩하면 전체 문서를 디코딩하면 으로 보이는 텍스트가 나타날 수 있습니다.은 HTML 태그와 유사하지만 실제로는 원본에 텍스트가 포함되어 있습니다. 문서.

5

&으로 시작하고;로 끝나는 HTML 페이지의 텍스트는 HTML로 인코딩됩니다.

당신은 사용하여 이러한를 디코딩 할 수 있습니다

string html = ...; //your html 
string decoded = System.Web.HttpUtility.HtmlDecode(html); 

또한 올바른 문자 세트에서 페이지를 다운로드 있는지 확인하는 방법에 대한 코드를 Characters in string changed after downloading HTML from the internet를 참조하십시오.

관련 문제