2013-02-05 4 views
0

내 앱에 HTML 페이지를 저장해야하며 "€"와 같은 문자가 발견되면 저장된 파일에 잘못 표시됩니다. 여러 인코딩을 시도했지만 아무도이 문제를 해결하지 못했습니다. 해결책이 있습니까? HTML 이름의 문자를 바꾸려고 시도했지만 여전히 작동하지 않습니다. YESflag 세트 아래Xcode로 이상한 HTML 문자를 인코딩하는 방법은 무엇입니까?

- (NSStringEncoding)smallestEncoding 
- (NSStringEncoding)fastestEncoding 

또는 사용 방법 :

NSString *HTML = [web stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML;"]; 

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *filePath = [NSString stringWithFormat:@"%@/%@", [path objectAtIndex:0],@"code.html"]; 

    int enc_arr[] = { 
     NSISOLatin1StringEncoding,  // ESP 
     NSUTF8StringEncoding,   // UTF-8 
     NSShiftJISStringEncoding,  // Shift_JIS 
     NSJapaneseEUCStringEncoding, // EUC-JP 
     NSISO2022JPStringEncoding,  // JIS 
     NSASCIIStringEncoding   // ASCII 
    }; 

    NSData *urlData= nil; 

    for (int i=0; i<6; i++) { 
     urlData = [HTML dataUsingEncoding:enc_arr[i]]; 
     if (urlData!=nil) { 
      break; 
     } 
    } 

    [urlData writeToFile:filePath atomically:YES]; 

답변

0

좋아, 내가 마지막으로, 가장 좋은 방법하지만 나를 위해 외부 라이브러리를 사용하지 않고 일을 유일한 아니라 그것을했다 : 2 개의 첫번째 방법은 형식을 유지

-(NSString*)escapeHTML:(NSString*)code{ 

    NSMutableArray *maExceptions = [[NSMutableArray alloc] initWithObjects: @"Œ", @"œ", @"Š", @"š", @"Ÿ", @"ƒ", @"‘", @"’", @"‚", @"“", @"”", @"„", @"†", @"‡", @"•", @"…", @"‰", @"€", @"™", nil]; 

    for (int i=0; i<[maExceptions count]; i++) { 
     code = [code stringByReplacingOccurrencesOfString:[maExceptions objectAtIndex:i] withString:[NSString stringWithFormat:@"&#x%x;",[[maExceptions objectAtIndex:i] characterAtIndex:0]]]; 

    } 

    return code; 
} 
0

NSString 방법을 참조하십시오 여기 내 코드의

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag 

을 그러나 이것은 당신이 느슨한 수 일부 문자.

+0

을하지만, CSS를 잃고 모두 잃어 내용. 다른 문자는 "?" 그래서 그것도 작동하지 않습니다 : ( – Sylphos

관련 문제