[NSXML initWithURL:..] 로 할때 에러날때는..
NSURLConnection 으로 일단 데이터를 받은다음에 데이터 제대로 들어왓는지 보고 바꿔주자..
1. '<' 앞에 화이트스페이스(공백, 리턴, 탭..)가 들어왔을때..
NSData > NSString로 서브스트링.. > NSData
NSString * buffer = [[NSString stringWithData:responseData encoding:NSUTF8StringEncoding];
buffer = [NSString stringWithString:[buffer rangeOfString:@"<"].location]; // 아니면 그냥 substringFromIndex로 해도 댐.
NSData * convertData = [buffer dataUsingEncoding:NSUTF8StringEncoding];
※ NSUTF8StringEncoding 아래의 경우 변환 해야댐..
2. EUC-KR.. NSXMLParser는 EUC-KR형식을 지원도 안해준다..
NSData > NSString로 인코딩 > NSData에서 또 인코딩
NSString * buffer= [[NSString alloc] initWithData:responseData encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingEUC_KR)]; // 혹은 encoding:(0x80000000 + kCFStringEncodingDOSKorean)
buffer = [buffer stringByReplacingOccurrencesOfString:@"EUC-KR" withString:@"UTF-8]; // 대소문자 알아서 구분하셈..
NSData * convertData = [str dataUsingEncoding:NSUTF8StringEncoding];
※ 이거땜에 하루종일 삽질.. 쉬밤.. 그냥 UTF-8을 쓰란 말이다.. ㅜㅜ
3. ..
뭐.. 열고닫기 잘못이거나.. 데이터를 아예 이상한걸 받아왓거나..? 1,2두개 짬뽕일 경우
그냥 옆에 맥보고 피씨에 따라쳤는데.. 오타는 셀프로 고칩시당..
=========
2011. 4. 19일 추가
NSURLConnection에서 인코딩방법 읽어올수 있었다.. 이걸로 통합적으로 관리하는 XMLParser를 만들어야할듯싶다..
근데 나 ASIHTTP에 갖다쓰는데 여기서도 있는지 한번 찾아봐야겠군..
요샌 다들 NSXMLParser 안쓰고 다 TB XMLParser쓰던데.. 속도가 빠른건 아는데.. 이게 따로 래핑해둔게 있어 편해서 계속 쓴다.. 크윽..
- (void) connectionDidFinishLoading:(NSURLConnection*)connection {
NSString * strEncodingName = [response textEncodingName];
if([strEncodingName isEqualToString:@"utf-8"])
{
// UTF-8
result = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
}
else {
// EUC-KR
result = [[NSString alloc] initWIthData:receivedData encoding:-214781280];
}
'일' 카테고리의 다른 글
ERROR : Failed To upload *.app (0) | 2010.10.28 |
---|---|
MSVC : fatal error C1859 (0) | 2010.09.07 |
ERROR : Couldn't register * with the bootstrap server. Error: unknown error code. (0) | 2010.07.19 |
ERROR : Provisioning profile ‘*' can’t be found” (0) | 2010.07.13 |
Struct Size (0) | 2009.10.12 |