[C#] UTF-8과 EUC-KR 인코딩

C#에서 UTF-8EUC-KR을 바이트코드로 변환하는 방법입니다. 항상 개발을 하거나, 혹은 프로그래밍 공부를 하다보면 한글을 어떻게 표현하고, 어떻게 조작해야하는지 고민할때가 많습니다. C#에서도 예외는 아니었는데, 웹브라우저 컨트롤을 쓰다가 한글이 포함된 주소가 먹히지 않는 사이트를 발견하고, 삽질을 시작했더랬습니다…^^ 조금은 어렵게, 혹은 쉽게 문제를 해결하였습니다.

인터넷 주소를 살펴보면 한글이 바이트코드로 전달되는데, UTF-8로 전달될때가 있고, EUC-KR로 전달될때가 있어서 전달되는 바이트코드가 UTF-8인지 EUC-KR인지 아래의 예제를 사용해보시면 확인해보실 수 있습니다.

사용법

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Encoding
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "김희선";
            Console.WriteLine("원본문자열 : {0}", s);

            // 코드페이지 번호는 http://msdn.microsoft.com/ko-kr/library/system.text.encoding.aspx 에서 확인하시면 됩니다.
            int euckrCodepage = 51949;
             
            // 인코딩을 편리하게 해주기 위해서 인코딩클래스 변수를 만듭니다.
            System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
            System.Text.Encoding euckr = System.Text.Encoding.GetEncoding(euckrCodepage);
 
            // 위에서 만든 변수를 이용하여 Byte의 배열로 문자열을 인코딩하여 얻는 부분입니다.
            byte[] utf8Bytes = utf8.GetBytes(s);
            Console.Write("UTF-8 : ");
            foreach (byte b in utf8Bytes)
            {
                Console.Write("{0:X} ", b); // byte를 16진수로 표기합니다.
            }
            Console.Write("\n");
 
            byte[] euckrBytes = euckr.GetBytes(s);
            Console.Write("EUC-KR : ");
            foreach (byte b in euckrBytes)
            {
                Console.Write("{0:X} ", b); // byte를 16진수로 표기합니다.
            }
            Console.Write("\n");
 
            // 인코딩된것을 문자열로 변환하기
            string decodedStringByEUCKR = euckr.GetString(euckrBytes);
            string decodedStringByUTF8 = utf8.GetString(utf8Bytes);
            Console.WriteLine("EUC-KR로 디코딩된 문자열 : " + decodedStringByEUCKR);
            Console.WriteLine("UTF-8로 디코딩된 문자열 : " + decodedStringByUTF8);
        }
    }
}

[다음글] [C#] 폴더 경로 가져오기

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x