Creative Commons License

Software Dev

프로그래밍기본
객체지향
프로젝트관리
알고리즘
데이타베이스

소프트웨어 개발에 필수적이고 필요한 주제에 대한 강의 및 공유

.

프로그래밍기본

닷넷 기반 개발도 결국 소프트웨어 개발입니다. 소프트웨어 개발을 위한 기본기를 다룹니다

SBCS, MBCS, WBCS

작성자 : 박종명
최초 작성일 : 2009-10-07 (수요일)
최종 수정일 : 2009-10-07 (수요일)
조회 수 : 4814

문자 인코딩 체계(방식)에 대한 분류입니다

* SBCS(Single Byte Character Set)
1바이트로 문자를 인코딩합니다. ASCII 인코딩이 대표적인 SBCS 입니다
ASCII 개요와 코드표는 다음의 글을 참고해 주세요
=> ASCII


* MBCS(Multi Byte Character Set)

1바이트로는 최대 256 글자만 표현할 수 있기 때문에 영어권 이외의 나라에서는 그 나라 문자를 인코딩
할 수 없기 때문에 바이트를 하나 더 사용합니다. 즉 최대 2바이트로 인코딩 합니다
2바이트로 문자를 표현하기 때문에 DBCS(Double Byte Character Set)이라고도 합니다
다만 MBCS 는 무조건 2바이트가 아니라 영어와 같이 1바이트로 표현 가능한 문자는 여전히 1바이트 사용합니다
즉 문자에 따라 1byte 혹은 2byte 를 사용합니다(MBCS = SBCS + DBCS라 할 수 있습니다)

대표적으로 euc-kr 이나 한글 윈도우 기본 ANSI 인코딩은 코드페이지 949가 MBCS에 해당합니다
euc-kr 전체 코드표는 다음의 링크를 참조해 주세요
=> euc-kr 전체 코드표


* WBCS(Wide Character Set)

MBCS 는 각 나라마다 그 정의가 다릅니다
따라서 전 세계 글자를 하나의 코드표로 정의하는게 필요 했는데, 바로 그렇게 탄생한 것이 유니코드(UniCode) 입니다. 유니코드를 WBCS라 합니다

유니코드에 대한 저의 에피소드는 다음글을 참조해 주세요
=> 이런... 계집 녀


아래 그림은 대표적인 인코딩에 따른 문자 길이와 바이트 수, 그리고 코드페이지를 보여줍니다
(닷넷으로 작성된 프로그램 입니다)



소스참고---------------------------------------------------------------------------------------------------------------------------------------------
        private void btnDefault_Click(object sender, EventArgs e)
        {
            this.txtDefaultLenght.Text = str.Length.ToString();
            this.txtDefaultByte.Text = Encoding.Default.GetByteCount(str.ToCharArray()).ToString(); 
            //this.txtDefaultByte.Text = Encoding.GetEncoding("ks_c_5601-1987").CodePage.ToString();
            this.txtDefaultCodePage.Text = Encoding.Default.CodePage.ToString();
        }

        private void btnUnicode_Click(object sender, EventArgs e)
        {
            this.txtUnicodeLength.Text = str.Length.ToString();           
            this.txtUnicodeByte.Text = Encoding.Unicode.GetByteCount(str.ToCharArray()).ToString();
            //this.txtUnicodeCodePage.Text = Encoding.GetEncoding("utf-16").CodePage.ToString();
            this.txtUnicodeCodePage.Text = Encoding.Unicode.CodePage.ToString();
        }

        private void btnUTF8_Click(object sender, EventArgs e)
        {
            this.txtUTF8Length.Text = str.Length.ToString();
            this.txtUTF8Byte.Text = Encoding.UTF8.GetByteCount(str.ToCharArray()).ToString();
            //this.txtUTF8CodePage.Text = Encoding.GetEncoding("utf-8").CodePage.ToString();
            this.txtUTF8CodePage.Text = Encoding.UTF8.CodePage.ToString();
        }

        private void btnEucKr_Click(object sender, EventArgs e)
        {
            this.txtEucLength.Text = str.Length.ToString();
            this.txtEucByte.Text = Encoding.GetEncoding("euc-kr").GetByteCount(str.ToCharArray()).ToString();
            this.txtEucCodePage.Text = Encoding.GetEncoding("euc-kr").CodePage.ToString();
        }

------------------------------------------------------------------------------------------------------------------------------------------------------

참고>

* chcp
현재 운영체제의 기본 ANSI 코드 페이지를 확인하려면 Command 창에서 다음 명령어를 확인하세요
chcp : 현재 활성 코드 페이지 확인
chcp xxx : 코드 페이지 변경


* charmap
그리고 현재 운영체제의 유니코드 문자표를 확인하려면 Command 창에서 charmap 명령어로 확인하세요

이름
비밀번호
홈페이지
NO <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요