Conversion des caractères UTF8 échappés en leur forme originale
Je suis en train de lire des chaînes de caractères à partir d'un tableau qui est à venir à partir d'un fichier plist et imprimer ces chaînes.
Les chaînes dans le tableau contient échappé caractères UTF8 - par exemple "Nuša Florjančič" devient "Nu\u0161a Florjan\u010di\u010d"
lors de la lecture de la plist. Il n'y a aucun moyen de modifier le contenu de ce fichier plist, mais mon programme doit afficher les noms correctement.
La chose étrange est que Objective-C semble faire cela automatiquement quand je suis coder en dur la chaîne. Cependant, si je reçois la chaîne à partir de la plist il ne se passe rien du tout.
Pour vous donner un exemple, voici un code:
NSString *name1 = @"Nu\u0161a Florjan\u010di\u010d";
NSString *name2 = [list objectAtIndex:0];
NSLog(@"name 1: %@", name1);
NSLog(@"name 2: %@", name2);
[list objectAtIndex:0]
contient @"Nu\u0161a Florjan\u010di\u010d"
- la seule différence, c'est qu'il a été défini par le plist editor.
La sortie de la console est:
2011-10-22 18:00:02.595 Test[13410:11c03] name 1: Nuša Florjančič
2011-10-22 18:00:02.595 Test[13410:11c03] name 2: Nu\u0161a Florjan\u010di\u010d
J'ai essayé toutes sortes de choses, y compris la transformation de la chaîne dans un C-string, puis la création d'un NSString
objet avec un encodage UTF-8 mais rien n'a fonctionné.
J'avais vraiment apprécier tous les conseils de votre part qui pourrait m'aider à résoudre ce banales problème.
source d'informationauteur Tobi | 2011-10-22
Vous devez vous connecter pour publier un commentaire.
Il semble que la chaîne de caractères dans le fichier plist contient les caractères "\u0161" plutôt que le caractère Unicode nombre 0x161. Si vous avez besoin de décoder le \u s'échappe dans la chaîne de caractères que vous avez extrait à partir de la plist.
NSString
peut le faire pour vous à l'aide deNSNonLossyASCIIStringEncoding
:Autre solution est d'analyser votre liste de chaîne de caractères (j'ai utilisé de l'analyser avant de le construire)
(Qui ressemble à une croate, je pense que latin1 s'adapte correctement)