VB :: Code & APIs

[VB.NET] 비주얼베이직에서 WebBrowser 의 DocumentText 속성 사용 시 한글 인코딩 손상 문제 해결 방법

비주얼베이직 .NET 버전에서는 WebBrowser 컨트롤을 폼에 올려서 특정 사이트에 접근 한 후, 마우스 오른쪽 버튼으로 소스 보기를 누르는 경우 한글이 손상되지 않습니다.

그러나 이 녀석을 WebBrowser1.DocumentText 로 해서 텍스트박스에 입력하시면 한글이 손상되는 현상이 나타납니다.

해당 현상의 원인은 .NET 웹 브라우저 컨트롤 자체에서 한글을 기본적으로 UTF-8 (유니코드) 로 얻어오기 때문에 발생하는 문제로 예상되며, 웹 소스 코드가 UTF-8 (유니코드) 방식으로 이루어져 있는 텍스트의 경우 DocumentText 로 불러와도 문제가 없습니다만, EUC-KR 로 되어있는 것들의 경우 모두 손상되어 표시됩니다.

해당 문제는 한참을 헤매다가 이렇게 해결 할 수 있다는 것을 알아내었습니다.

 

Imports System.IO

 

를 선언부에 입력하신 후에,

 

Dim docStream As Stream
Dim docStreamReader As StreamReader
docStream = WebBrowser1.DocumentStream
docStreamReader = New StreamReader(docStream, System.Text.Encoding.GetEncoding(WebBrowser1.Document.Encoding))
docStream.Position = 0
TextBox1.Text = docStreamReader.ReadToEnd()

 

위의 코드를 입력하시면 인코딩 방식에 상관없이 한글이 정상적으로 출력되는 결과를 얻으실 수 있습니다.
이상입니다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s