2010-07-23 2 views
3

텍스트 파일을 UITextViewtextView으로 가져 오는 데 사용하는 코드는 다음과 같습니다.알 수없는 인코딩의 텍스트 파일을 iPhone의 NSString에 안정적으로 가져 오려면 어떻게해야합니까?

미리 파일의 인코딩을 알 수 없기 때문에 참조로 인코딩 값을 저장하는 -stringWithContentsOfFile:usedEncoding:error: 메서드를 사용합니다. 내가 인코딩을 일단

, 나는 그 오류가 있다면, 몇 가지 정보 인쇄, 파일을 열고 : 파일이 UTF8 인코딩의 경우, 아이폰에

NSError *_error = nil; 
NSStringEncoding _textEncoding; 
NSString *_contentText = [NSString stringWithContentsOfFile:[baseURL path] usedEncoding:&_textEncoding error:&_error]; 

if (_error) { 
    NSLog(@" _error: %@", [_error userInfo]); 
    NSLog(@" _textEncoding: %d", _textEncoding); 
} 

textView.text = _contentText; 

을의 텍스트보기는 파일 내용을 올바르게 표시합니다.

2010-07-23 02:57:46.786 App[9160:307] _error: { 
    NSFilePath = "/var/mobile/Applications/0AD83E02-7A2A-4665-8B8F-17E03EE12B9E/Documents/A+B.txt"; 
} 
2010-07-23 02:57:46.791 App[9160:307] _textEncoding: 805298632 

NSASCIIStringEncoding를 들어 내가 일하지 805298632의 값을 얻어야한다 : 아이폰

, 파일이 ASCII 인코딩 (NSASCIIStringEncoding) 인 경우는, 그때 이상한 문자열 인코딩 값을 얻는다.

을 통해 파일을 열면 이 나옵니다. 올바른 인코딩 값을 얻고 텍스트보기에 ASCII 인코딩 파일의 내용이 표시됩니다.

나는 올바른 구문이 있다고 생각하지만, 나는 분명히 뭔가를 놓친 것 같아. 여기서 내가 뭘 잘못하고 있니?

+2

(현지화 된) 오류 설명을 확인 했습니까? – Eiko

+0

파일이 장치의 Documents 폴더에 있습니까? 아마도'NSFileManager'를 사용하여 거기에 있는지 확인하십시오. – falconcreek

+0

예, 파일이 확실히 존재합니다. 언급 한 바와 같이 파일을 UTF8로 인코딩하면 파일이 텍스트보기에서 올바르게 표시됩니다. –

답변

1
  1. stringWithContentsOfFile : usedEncoding : error :가 실패했습니다. 이유를 확인하려면 오류 세부 정보를 기록하십시오.
  2. 형식 지정자는 %lx이어야합니다. NSStringEncoding은 장치에 unsigned longNSUInteger입니다. 열거 된 값 중 일부는 16 진수 값입니다.
  3. 생성되는 파일은 어떤 플랫폼입니까? 인코딩이 실제로 ASCII인지 확실합니까? 인코딩이 유효한 지 확인하려면 파일에서 hexdump를 수행해야합니다.
  4. _textEncoding을 0으로 초기화 해보십시오. 열거 형 상수는 1부터 시작합니다.
  5. 가드를 추가하여 반환되는 문자열이보기로 전달되기 전에 nil이 아닌지 테스트하십시오. documentation에 따라 오류가있는 경우 반환 값은 nil입니다.