문자열인 한글인지를 판단하기 위해서 wide character(wchar_t형, wcs)는
multibyte character (char형, mbs)로 변환을 해주어야 한다. (wcs는 한글/영문 판별이 안됨)
=> 프로그램을 wchar_t 로 작성했을 경우 wcstombs() 등의 함수를 사용하여 변환하는 과정이
포함되어야 한다는 뜻이다.
또, 시스템이 utf-8 인코딩인 경우(소스코드가 utf-8로 인코딩되어 저장됨) 한글은 2 바이트가 아닌
3바이트로 저장되기에 한글 판단을 위해서는 이를 2바이트 유니코드로 변경해야한다.
=> 시스템의 인코딩을 인지하여 3 바이트 한글을 2바이트 한글로 변환하는 과정이 필요하다.
한글 판단
if ( 0x80 & 문자 ) // 이면 일단 영문의 범위를 넘어간다
그중에 한글인지 판단은
유니코드일 때
첫번째 바이트 0xAC ~ 0xD7
두번째 바이트 0x00 ~ 0xFF
완성형(euc-kr) 일 때
첫번째 바이트 0xB0 ~ 0xC8
두번째 바이트 0xA1 ~ 0xFE
조합형
첫번째 바이트 0x84 ~ 0xD3
두번째 바이트 0x41 ~ 0x7E, 0x81~ 0xFE
%%
euc-kr이 ksc5601이 아니라 ksc5861이라는 글을 얼핏 봤는데
정확하게는 잘 모르겠다.
if ( utf-8 인코딩 )
{
decoding to normal unicode
if ( 문자 & 0x80 )
{
if ( 유니코드의 한글 범위 내에 있으면 )
한글이다.
}
}
else
if ( 문자 & 0x80 )
{
if ( euc-kr )
{
}
else
if ( 조합형 )
{
}
}
'프로그래밍 > 폰트_문자열_인코딩' 카테고리의 다른 글
한글 코드 판단 (0) | 2014.01.21 |
---|---|
일단 한글 표준 코드에 관한 읽을만한 글 (0) | 2014.01.21 |
조합형 폰트 출력 (0) | 2011.04.14 |
유니코드 처리 (0) | 2011.04.13 |
unicode, encoding, utf-8, euck-kr, charmap, charset (0) | 2011.04.13 |