블로그는 나의 힘!
[ Programing ]/Algorithm2010. 7. 15. 09:33

// UTF-8 byte별 문자 구분

int GetSyllableSize( char byte )
{
     if( !( byte & 0x80 ) )           return 1;        // 1byte.   범위 0x00 ~ 0x7F
     else if( !( byte & 0xC0 ) )   return 2;        // 2byte.   범위 0x80 ~ 0xBF
     else if( !( byte & 0xE0 ) )   return 3;        // 3byte.   범위 0xC0 ~ 0xFE
     else if( !( byte & 0xFF ) )   return 4;
     else                                return 0;
}

bool IsComparison( char* szName, int syllable )
{
     char szComparison_1[] = "a";    // UTF-8 방식으로 대입 해야 함.
     char szComparison_2[] = {0xEA, 0xB0, 0x81};    // UTF-8 방식으로 대입 해야 함. '각'

     switch( syllable )
     {
           case 1:         // 1byte 문자처리
                {
                      if( szComparison_1[0] == szName[0] )     return true;
                } break;
           case 2:         // 2byte 문자 처리
                {
                      if( szComparison_2[0] == szName[0] &&
                          szComparison_2[1] == szName[1] )     return true;
                } break;
           case 3:         // 3byte 문자 처리
                {
                      if( szComparison_2[0] == szName[0] &&
                          szComparison_2[1] == szName[1] &&
                          szComparison_2[2] == szName[2] )     return true;
                } break;

           default:
                break;
     }
     return false;
}

void main()
{
     char szstrName[] = {0xEA, 0xB0, 0x80};    // UTF-8 방식으로 대입 해야 함. '가'

     if( IsComparison( szstrName, GetSyllableSize( szstrName[0] ) ) )
          printf( " true \n" );
     else
          printf( " flase \n" );
}


참고 UTF-8 & Unicode 코드표 : titus.uni-frankfurt.de/unicode/unitestx.htm

'[ Programing ] > Algorithm' 카테고리의 다른 글

비트(bit) 연산  (0) 2011.01.03
거리 계산  (0) 2011.01.03
FSM  (0) 2010.06.23
C.R.C. 메모리 검증과 그외 검증 기법  (0) 2010.02.02
[ 스코프 ( 곡선 ) ] cos( M_PI * lfPerTime / 2 );  (0) 2010.02.01
Posted by Mister_Q