2010-03-26 4 views
20

wenn ich versuche, wie so Form utf-8-String in NSString zu konvertieren:"unvollständig universeller Charakter Name" mit stringWithUTF8String

NSString *s = [NSString stringWithUTF8String:"\U0627\U0644\U0641\U0631\U0646"]; 
NSLog(@"%@", s); 

bekomme ich den Compiler-Fehler:

incomplete universal character name 

beachten Sie, dass es irgendwann nur funktioniert gut:

NSString *UAE = [NSString stringWithUTF8String:"\U0627\U0644\U0641\U0631\U0646"]; 
    NSLog(@"%@", UAE); 

und die Ausgabe:

الامارات 

also warum passiert das? bitte hilfe.

+0

Gee, einen Fehler in Xcode das ist. Nicht-ASCII ist für einige Nationen immer noch schwer zu bekommen ;-) – brainray

Antwort

0

unvollständiger universeller Charaktername bedeutet, dass Sie einen Teil eines der utf8 Zeichen, die Sie versuchen zu schreiben, fehlen.

UTF8 reicht von 1 Byte Symbole auf 4-Byte-Zeichen, wahrscheinlich einer von Ihnen ist länger, die Sie geschrieben haben und Sie vermissen 1 Byte oder so ..

+0

danke viel Jack, aber ich versuche, die UTF-8-Zeichenfolge von einem Webdienst zu analysieren, über den ich keine Kontrolle habe. Ist Platz in der UTF-8-Zeichenfolge hat etwas mit dem Problem zu tun. Ich meine, wie kann ich in meinem Fall hier ein Raumzeichen darstellen? danke nochmal – Nasser

+0

Wenn die Zeichenfolge von einem Webservice stammt, wie erhalten Sie einen Fehler bei der Kompilierung? –

+0

tatsächlich kopierte ich die utf-8-Zeichenfolge manuell aus dem zurückgegebenen dict und teste es mit der Methode -stringWithUTF8String, das ist, wenn ich Kompilierzeit Fehler – Nasser

36

\ U und \ u nicht das Gleiche sind. Die \ U Flucht erwartet 8 (hex) Ziffern statt 4.

Dies sollte funktionieren:

NSString *s = [NSString stringWithUTF8String:"\u0627\u0644\u0641\u0631\u0646"]; 
+0

Mann Mann Mann, vielen Dank :) – Nasser

+2

Apple macht diesen Fehler tatsächlich wenn Ereignisse für UI-Tests aufzeichnen. (Ab Xcode 7.3 mindestens) –