Visual Studio 2019 한글 형식(인코딩). 유니코드, EUC-KR
문자를 입력 받았을 경우, 한글인지 아닌지 판별하기 위하여 작업 도중,
WCHAR, char의 한글 형식을 같은 유니코드를 사용하고 있는 줄 알았으나
값이 다르게 나와서 찾아 보았다.
한글의 형식은 컴파일러마다, 운영체제마다 다르다고 한다.
Window10, Visual Studio 2019의 환경에서
WCHAR 형은 유니코드를 사용하고
char 형은 EUC-KR을 사용하는 것 같다.
ex)
//WCHAR eee[20] = TEXT("가나하");
unsigned char eee[20] = "가나하";
unsigned char eee1;
unsigned char eee2;
eee1 = *((unsigned char*)eee + 0);
eee2 = *(((unsigned char*)eee) + 1);
TextMB::Box(eee1, eee2);
eee1 = *((unsigned char*)eee + 2);
eee2 = *(((unsigned char*)eee) + 3);
TextMB::Box(eee1, eee2);
eee1 = *((unsigned char*)eee + 4);
eee2 = *(((unsigned char*)eee) + 5);
TextMB::Box(eee1, eee2);
유니코드 | WCHAR | char | |
가 | AC00 | 00AC | B0A1 |
나 | B098 | 98B0 | B3AA |
하 | D558 | 58D5 | C7CF |
둘 다, 두번째 바이트에 최상위 비트가 1인지 0인지 확인하면 한글 판별이 가능할 것 같다.
그런데 WCHAR의 값은 리틀엔디안 형식이니 반대로 나온게 맞는것 같은데,
char의 값은 그대로 나왔다. 뭐지..?
-- 유니코드 문자표
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EC%98%81%EC%97%AD
https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_A000~AFFF
-- EUC-KR 문자표
https://uic.win/ko/charset/show/euc-kr/
-- CP949
https://charset.fandom.com/ko/wiki/CP949
EUC-KR를 찾다가 보니 CP949, KS X 1001, KS X 1003 등등 여러 인코딩이 나오던데
언급은 하지 않겠다...