2010-03-21 3 views
0

NSXmlParser를 사용하여 ISO-8859-1 데이터를 구문 분석하려고합니다. ISO-8859-1을 파싱하기 위해 애플 자신의 예제를 사용하여, 나는 다음을 가지고있다.NSString에서 NSData로 인코딩하지 못했습니다.

// path to xml file 
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"]; 

// string of xml contents 
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"contents: %@", xmlFileContents); 

콘솔에서 볼 때 문자열의 내용이 정확합니다.

그러나 파서와 함께 사용하기 위해 NSData 객체로 변환하려고하면 다음 작업을 수행합니다. 내 didStartElement 대리자가 호출 될 때

NSData *xmlData = [xmlFileContents dataUsingEncoding:NSUTF8StringEncoding]; 

는하지만, 나는 Â 내가 인코딩 차이에서 생각하는 게재를 참조하십시오.

NSXmlParser에서 ISO-8859-1을 처리 할 수 ​​있습니까? 그렇다면 무엇이 잘못 되었나요?

+0

NSXMLParser가 ''선언문에서 다루는 인코딩을 이해할 수 없습니까? – zneak

+0

나는 그렇게 생각할 것이다. : 내 XML로 시작 그리고 같은 나는있는 NSString 내용이 올바르게 기록했다. 그것을 NSData로 변환하고, NSXmlParser를 시작하고 didStartElement에서 발견 된 것을 덤프하면 특정 영역에서 이러한 문자가 생성됩니다. – Ternary

+0

파일을 NSString으로 읽어 들인 다음 NSData로 변환하는 대신 작업을 단순화 할 수 있습니다. [NSData dataWithContentsOfFile : xmlFilePath] –

답변

4

아무도 NSXmlParser에 의해 올바르게 읽힌 <?xml version="1.0" encoding="ISO-8859-1"?>으로 시작하는 XML을 얻는 방법을 알아 내려고이 스레드에서 끝내는 경우를 위해, 여기 내가 일하는 것이 있습니다. 나는 가짜 Â 문자를 피할 수있는 유일한 방법은 NSUTF8StringEncodingNSData에 다음 한 NSUTF8StringEncoding으로 XML 내용에 읽기 및

// path to xml file 
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"]; 

// string of xml contents (read in NSUTF8StringEncoding) 
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil]; 

// interpret string of XML contents as ISO-8859-1 (NSISOLatin1StringEncoding) 
NSData *xmlData = [xmlFileContents dataUsingEncoding:NSISOLatin1StringEncoding]; 

// spawn new thread to parse data 
[NSThread detachNewThreadSelector:@selector(parseLineData:) toTarget:self withObject:xmlData]; 

.