문자 인코딩 체계(방식)에 대한 분류입니다
* 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 명령어로 확인하세요
