2012-06-06 10 views
0

UTF-8로 인코딩 된 XML 파일에서 데이터를 가져오고 모든 요소를 ​​UITableView에 표시하려고합니다. 내 셀을 동일한 크기로 만들고 가능한 대부분의 데이터가있는 첫 번째 텍스트 줄 2 개를 표시하여 캐리지 리턴을 제거하려고했습니다. 에 의해UTF-8을 사용할 때 NSString이 잘못된 문자로 표시됩니다.

[[myCell textLabel] setText:data]; 

: 여기

[[myCell textLabel] setText:[self correctData:data]]; 

내 correctData 방법입니다 : 내 cellForRow 방법에

나는이 변경

- (NSString *) correctData : (NSString *) str 
{ 
    NSMutableString *res = [NSMutableString stringWithFormat:@""]; 
    for(int i = 0 ; i < [str length] ; i++) 
    { 
     char car = [str characterAtIndex:i]; 
     if(car != 10 && car != 13) 
      [res appendString:[NSString stringWithFormat:@"%c",car]]; 
    } 
    return res; 
} 

그리고이 올바르게 캐리지 리턴을 제거하지만 또한 UTF-8 문자를 변경합니다. 예를 들어, 초기 스트링의 비트 (STR)

DiplÙmÈ (E) (D)를 :

그리고이 함수가된다

Diplômé (E) 디 ETAT 'Etat

어떻게해야합니까? 감사.

답변

4

NSStringunichar의 문자가 16 비트에 저장되는 반면 char은 8 비트의 문자 만 사용합니다. unicharchar으로 변환하면 코드 포인트가 U+00FF 인 모든 문자가 변경됩니다.

charunichar%c%C으로 바꾸면이 문제를 해결할 수 있습니다.

편집 :하지만 그렇게 효율적이지는 않습니다. 한 번에 정규 표현식을 사용하여 모든 개행 문자를 바꿀 수 있습니다.

str = [str stringByReplacingOccurrencesOfString:@"[\r\n]+" 
            withString:@"" 
             options:NSRegularExpressionSearch 
              range:NSMakeRange(0, str.length)]; 
+0

정말 쉽습니다. 고마워요! – Rob

관련 문제