형 변환이 아니라 값 변환 문제인데 형 변환으로 해결하려다 2일동안 삽질했네요;
내용은 NSString 형 변수에 "\uXXXX\uXXXX" 유니코드 형식의 문자열 값이 들어있고 이 값을 한글등의 문자열 값으로 변환하는 내용입니다.
위에서도 언급하였지만 형변환이 아니라 값변환 이기 때문에 아래와 같은 메소드를 만들어서 해결하였습니다.
간략히 설명하자면,
유니코드 형식의 문자열 값을 가진 NSString 형 변수를 "\u" 를 구분자로 하여 파싱한 다음
"\u"를 제외한 나머지 16진수 값 4자리 문자열을 subString 해서 NSScanner 객체에 담습니다.
이 NSScanner 객체를 이용하여 문자열을 숫자값(int)으로 변환한 후 해당 숫자값을 "%C" 포맷을 이용하여 다시 문자열로 변경하는 메소드입니다.
-(NSString*)getNSStringFromUnicode:(NSString*)strUnicode {
NSString *strResult = [[[NSString alloc] init] autorelease];
NSString *strTmp;
NSRange nRange;
while ( 1 )
{
nRange = [strUnicode rangeOfString:@\\u];
if ( nRange.length )
{
strResult = [strResult stringByAppendingString:[strUnicode substringToIndex:nRange.location]];
strTmp = [strUnicode substringToIndex:nRange.location + 6];
NSString *strHex = [strTmp
substringWithRange:NSMakeRange(nRange.location+2, 4)];
NSScanner *hexScanner = [NSScanner scannerWithString:strHex];
[hexScanner setScanLocation:0];
unsigned unicodeHexValue;
[hexScanner scanHexInt:&unicodeHexValue]
strResult = [strResult
stringByAppendingFormat:@"%C",unicodeHexValue];
strUnicode = [strUnicode substringFromIndex:nRange.location +
6];
}
else
{
strResult = [strResult stringByAppendingFormat:@"%@", strUnicode];
break;
}
}
return strResult;
}
출처 : http://my1over.blog.me/120102660176
'개발지식창고 > iOS' 카테고리의 다른 글
[iOS] http 통신 (0) | 2014.01.15 |
---|---|
HTTP 통신 (GET/POST) (동기/비동기) (0) | 2014.01.12 |
[iOS] Json 파싱 (0) | 2014.01.12 |
[Object c]함수 선언 및 호출 방법 예제 (0) | 2014.01.10 |
XCode 단축키 (0) | 2013.12.25 |