한글 파싱에 관한 질문입니다.
글쓴이: 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
댓글 달기