2010-11-07 6 views
2

c'est une question stupide n00b mais je ne comprends pas à travailler. Je crois que j'ai besoin de convertir en NSString et tirer parti de "stringWithUTF8String:" mais je ne comprends pas exactement comment l'implémenter dans ce code afin que j'obtienne la bonne sortie dans le NSLog. J'ai regardé autour mais ça ne marche toujours pas. Le plist est correct.Problème stupide avec UTF8

Ma sortie est:

2010-11-07 21:43:00.419 plist_test[2984:207] Förbered och skriv 
2010-11-07 21:43:00.425 plist_test[2984:207] KLART 
2010-11-07 21:43:00.425 plist_test[2984:207] LÄS IN PLIST 
2010-11-07 21:43:00.427 plist_test[2984:207] array2: ( 
    ETT,  
    "TV\U00c5", ========Here is the problem, should be "TVÅ"  
    TRE, 
    FYRA 
) 

Voici le code que je utilise.

- (void)viewDidLoad { 

NSLog(@"Förbered och skriv"); 

NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:@"ETT"]; 
[array addObject:@"TVÅ"]; 
[array addObject:@"TRE"]; 
[array addObject:@"FYRA"]; 

[array writeToFile:@"/Users/PeterK/Desktop/plisttest.plist" atomically: TRUE]; 


NSLog(@"KLART"); 


NSLog(@"LÄS IN PLIST"); 

NSMutableArray *array2 = [[NSMutableArray alloc] init]; 

array2 = [NSMutableArray arrayWithContentsOfFile:@"/Users/PeterK/Desktop/plisttest.plist"]; 

NSLog(@"array2: %@", array2); ====here is the output 


[super viewDidLoad]; 
} 
+1

ces chaînes sont-elles correctement sérialisées sur le fichier? – rano

+0

me semble bien: http://www.fileformat.info/info/unicode/char/c5/index.htm –

Répondre

1

Les littéraux de chaînes Objective-C ne sont pas strictement ASCII 7 bits, comme l'illustre votre exemple. Cependant, vous devriez éviter d'utiliser tout sauf ASCII 7 bits pour la cohérence et la compatibilité.

Le travail suivant pour simplement charger des chaînes en utilisant Unicode en toute sécurité. Localized String stuff est une interface multilingue. Séparer le texte affiché à partir des boutons affichés, et autres.

+0

J'ai essayé ce qui suit: – PeterK

+0

je ne comprends toujours pas cette chose au travail? – PeterK

+0

Je reçois la sortie suivante: 2010-11-09 19: 04: 17.722 plist_test [684: 207] LÄS IN PLIST 2010-11-09 19: 04: 17.729 plist_test [684: 207] texte: \t ETT \t två \t ERT \t FYRA PeterK

2

Apple String Programming Guide dit objectif littéraux de chaîne c dans votre code sont strictement ASCII 7 bits. (edit: ils ne sont pas strictement ASCII 7 bits, mais tout autre chose que ASCII 7 bits signifie qu'ils sont par module et ne sont pas liés à votre section de données statiques, ce qui pourrait conduire à une météorisation, en d'autres termes, à moins c'est un fardeau de la mémoire, allez-y.)

Vous pouvez charger vos chaînes à partir des données via la méthode NSLocalizedString resources.

Questions connexes