// 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 |