Ich erhalte utf-8 (hex): Hc3b8rt zurück von einem Server anstelle der Zeichenfolge "Hørt". Ich muss diese Antwort auf reguläres utf-8 konvertieren.
Was ich versucht habe:
NSString *string = [dict objectForKey:@"suggest"];
const char *cfilename=[string UTF8String];
NSString *str = [NSString stringWithUTF8String:cfilename];
Vielen Dank für Ihre Zeit!
Antworten:
1 für die Antwort № 1Es gibt keine Möglichkeit, dies zu dekodieren. Wie @JoachimIsaksson in den obigen Kommentaren feststellte, können Sie feststellen, ob "abba" genau "abba" oder zwei Unicode-Zeichen ist.
1 für die Antwort № 2
Verwenden Sie String-Codierung, NSISOLatin1StringEncoding
- (id)initWithCString:(const char *)nullTerminatedCString
encoding:(NSStringEncoding)encoding
Oder kurz
NSString *str = [NSString stringWithCString:cfilename
encoding:NSISOLatin1StringEncoding];
Nach Kommentaren bearbeiten:
Das ist irgendwie seltsam. Nach Ihren Kommentaren habe ich einige Experimente durchgeführt und merkwürdiges Verhalten festgestellt.
- (void) testStringEncodingOK {
NSString *string = @"hu00c3u00a5r";
const char *cfilename=[string cStringUsingEncoding:NSISOLatin1StringEncoding];
NSString *cs = [NSString stringWithUTF8String:cfilename];
NSLog(@"String: %@", cs);
}
Diese Ausgabe: hår
Aber wenn Sie das U in Kapital erhalten, nicht u, dann ersetzte ich sie zu u. Und dann hat es nicht geklappt. Scheine das,
- (void) testStringEncodingConfused {
NSString *string = @"h\U00c3\U00a5r";
string = [string stringByReplacingOccurrencesOfString:@"\U" withString:@"\u"];
NSLog(@"Original string:%@", string); // now string = @"hu00c3u00a5r"
const char *cfilename=[string cStringUsingEncoding:NSISOLatin1StringEncoding];
NSString *cs = [NSString stringWithUTF8String:cfilename];
NSLog(@"String: %@", cs);
}
Die Ausgabe ist hu00c3u00a5r
0 für die Antwort № 3
Verwenden Sie den folgenden Code.
const char *ch = [yourstring cStringUsingEncoding:NSISOLatin1StringEncoding];
yourstring = [[NSString alloc]initWithCString:ch encoding:NSUTF8StringEncoding];
NSLog(@"%@",yourstring);
Lass mich wissen, ob es funktioniert oder nicht ...
Happy Coding ....
0 für die Antwort № 4
benutze diesen Code
NSString *string = [dict objectForKey:@"suggest"];
const char *cfilename=[string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *str = [NSString stringWithUTF8String:cfilename];
und sagen, ob es funktioniert oder nicht.