일단, wchar_t로 변경하려고 했던 이유는 유니코드를 이용하여, 유니코드 코드값(?)연산을 이용하여 분리하려고 했었는데요.
젤 문제가 되었던것이 NSString을, wchar_t로 바꾸기가 너무 힘들었다는 점이죠.
결론은, 굳이 저같은 삽질을 하지 않더라도, NSString자체가 유니코드를 사용하는 변수로, 그냥 NSString의 변수를 바로 연산하여도 되더라 이말입니다. = _= 젝일슨.
유니코드 연산법에 대한 PHP코드는 옛날에 적어두었던 글을 링크해둡니다.
2006/02/04 - UTF-8 기준, 한글을 초성,중성,종성으로 분리하기
- (NSString *)GetUTF8String:(NSString *)str {
NSArray *cho = [[NSArray alloc] initWithObjects:@"ㄱ",@"ㄲ",@"ㄴ",@"ㄷ",@"ㄸ",@"ㄹ",@"ㅁ",@"ㅂ",@"ㅃ",@"ㅅ",@" ㅆ",@"ㅇ",@"ㅈ",@"ㅉ",@"ㅊ",@"ㅋ",@"ㅌ",@"ㅍ",@"ㅎ",nil];
NSArray *jung = [[NSArray alloc] initWithObjects:@"ㅏ",@"ㅐ",@"ㅑ",@"ㅒ",@"ㅓ",@"ㅔ",@"ㅕ",@"ㅖ",@"ㅗ",@"ㅘ",@" ㅙ",@"ㅚ",@"ㅛ",@"ㅜ",@"ㅝ",@"ㅞ",@"ㅟ",@"ㅠ",@"ㅡ",@"ㅢ",@"ㅣ",nil];
NSArray *jong = [[NSArray alloc] initWithObjects:@"",@"ㄱ",@"ㄲ",@"ㄳ",@"ㄴ",@"ㄵ",@"ㄶ",@"ㄷ",@"ㄹ",@"ㄺ",@"ㄻ",@" ㄼ",@"ㄽ",@"ㄾ",@"ㄿ",@"ㅀ",@"ㅁ",@"ㅂ",@"ㅄ",@"ㅅ",@"ㅆ",@"ㅇ",@"ㅈ",@"ㅊ",@"ㅋ",@" ㅌ",@"ㅍ",@"ㅎ",nil];
NSString *returnText = @"";
for (int i=0;i<[str length];i++) {
NSInteger code = [str characterAtIndex:i];
if (code >= 44032 && code <= 55203) { // 한글영역에 대해서만 처리
NSInteger UniCode = code - 44032; // 한글 시작영역을 제거
NSInteger choIndex = UniCode/21/28; // 초성
NSInteger jungIndex = UniCode%(21*28)/28; // 중성
NSInteger jongIndex = UniCode%28; // 종성
returnText = [NSString stringWithFormat:@"%@%@%@%@", returnText, [cho objectAtIndex:choIndex], [jung objectAtIndex:jungIndex], [cho objectAtIndex:jongIndex]];
}
}
return returnText;
}
이렇게 해두고, NSLog([GetUTF8String:@"알쯔"]); 라고 하면 ㅇㅏㄹㅉㅡ 가 리턴됩니다.Objective-C는 아직 공부중인 언어라 문법으로 적어둔게 거지같을 수 도 있고 release 안한 변수도 보이고 뭐 그렇습니다. 걍 참고용으로만 사용하세요.
'이럴땐, 이렇게! > 프로그래밍' 카테고리의 다른 글
| Editplus에서 Java 연동 (0) | 2010/04/25 |
|---|---|
| Objective-C, SQLite3에서 Like 검색시 % 문제 (0) | 2010/04/21 |
| Objective-C에서 한글 초성, 중성, 종성 분리 (5) | 2010/04/19 |
| 간단한 CSS 팁 (1) | 2008/10/22 |
| FlashPlayer10 변경사항 및 문제점 (30) | 2008/10/16 |
| 플래시 플레이어 9.0.124 이후 원격지 소켓인증받기 (0) | 2008/07/31 |





댓글을 달아 주세요
초성검색알고리즘을 사용해도될까용?
2010/07/14 16:57네 상관없습니다. ^^;;
2010/07/16 20:19오브젝티브C 공부하면서 초성 인덱스 만들려고 자료를 찾다가
2010/08/17 21:19이곳에서 많은 도움 얻고 갑니다.
덕분에 잘 해결했습니다. ^^
정말 좋은 팁 감사합니다 :)
2010/10/22 11:1715번째 줄의 마지막 인자를 [cho objectAtIndex:jongIndex] 를 [jong objectAtIndex:jongIndex] 로 바꿔주세요~
좋은 자료 감사합니다!
2011/07/22 10:22쌍시옷 앞에 띄어쓰기가 있네요 ㅎㅎㅎ