본문 바로가기

프로그래밍/폰트_문자열_인코딩

헷갈리는 한글판단 in utf-8, unicode, euc-kr

문자열인 한글인지를 판단하기 위해서 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 ( 조합형 )

    {

    }

}




Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Visits
Today
Yesterday