한글 파싱에 관한 질문입니다.
글쓴이: c9844043 / 작성시간: 금, 2007/11/09 - 11:34오전
{
int i=0;
int j;
char str[20]="가나다abc라마사";
char *tmp=str;
char s[20]={0,};
for(j=0; j<3; j++)
{
if(*tmp & 0x80)
{
s[i]=*tmp;
i++; tmp++;
s[i]=*tmp;
}
else
{
s[i]=*tmp;
}
i++; tmp++;
}
printf("%s\n", s);
return 0;
}여기의 글을 보고 위와 같이 테스트를 한 번 해보았습니다.
근데 for 문에서 j<3 일때나, j<4 일 때나
출력은 '가나' 가 나옵니다.
제 생각에 j<3 일때는 '가나다' 가 출력이 되고 j<4 일때는 '가나다a' 가 출력되어야 할 것 같은데
왜 '가나'만 출력이 될까요?
답변 부탁드립니다.
Forums:


아마 utf8로
아마 utf8로 저장되어있는 한글 문자열을 한글자씩 가져오는데서 문제가 있는거 같습니다.
utf8은 한 문자가 정해지지 않은 여러 바이트로 이루어집니다. 코드에서처럼 2바이트가 아니죠.(완성형이나 조합형은 항상 2바이트인테 반해...)
아래 utf8의 인코딩 방법을 참고해서 한 글자를 추출해내면 될 것 같습니다.
http://en.wikipedia.org/wiki/Utf8#Description
댓글 달기