2011-08-30 3 views
0

이외의 언어 의 콘텐츠를 표시하려면 System.windows.Forms.WebBrowser을 사용하려고하지만 인코딩 결과가 올바르지 않습니다. 예를 들어 러시아어를 표시하려면 어떻게해야합니까?System.windows.Forms.WebBrowser에서 영어 이외의 언어를 인쇄 할 수 없습니다.

I 다운로드하고 다음과 같은 문자열을 표시하고 있습니다 :

System.Net.WebClient wc = new System.Net.WebClient(); 
webBrsr.DocumentText = wc.DownloadString(url); 
+1

그리고 다운로드 된 내용은 실제로 러시아어입니까? –

+0

DocumentText는 .NET에서 문자열 인 utf16입니다. 인코딩 문제가있을 수 없습니다. WebBrowser는 Internet Explorer이므로 러시아어에 문제가 없습니다. 문제는 오른쪽에 있습니다. –

+0

제목 앞에 "C# :"을 붙이지 마십시오. 우리는 [SO]에 그 목적을 위해 태그를 사용합니다. –

답변

1

문제는 WebClient 함께 어떻게 문자열 인코딩을 해석한다. 한 가지 해결책은 데이터를 원시 바이트로 다운로드하여 수동으로 파싱하는 것입니다.

Bytes[] bytes = wc.DownloadData("http://news.google.com/news?edchanged=1&ned=ru_ru"); 
//You should really inspect the headers from the response to determine the exact encoding to use, 
// this example just assumes UTF-8 which might work in most scenarios 
String t = System.Text.Encoding.UTF8.GetString(bytes); 
webBrsr.DocumentText = t; 
+0

좋습니다! 나는 UTF-8만으로도 충분하다. 운이 좋지 않은 코드와 같은 것을 시도했지만 이제는 모두 솔루션과 함께 잘 작동합니다. 고마워 크리스! //이 코드는 잘못되었습니다. byte [] myDataBuffer = wc.DownloadData (url); webBrsr.DocumentText = Encoding.Unicode.GetString (myDataBuffer); –

+0

@Gen, 듣기 좋네. 그 가치에 대해,'System.Text.Encoding.Unicode'는 실제로 대부분의 사람들이 생각하는 것이 아닙니다. 필자는 개인적으로이 파일을 제거하거나 적어도 UTF16LE 또는 유사한 이름으로 변경해야한다고 생각합니다. –

관련 문제