Dans une application objectif-c/cacao, j'utilise des fonctions c pour ouvrir un fichier texte, le lire ligne par ligne et utiliser certaines lignes dans un tiers fonction. En pseudo-code:Lecture et édition de chaînes UTF-8 dans c/cacao
char *line = fgets(aFile);
library_function(line); // This function calls for a utf-8 encoded char * string
Cela fonctionne bien jusqu'à ce que le fichier d'entrée contient des caractères spéciaux (tels que des accents ou l'UTF-8 BOM), après quoi les sorties de fonctions de bibliothèque caractères mutilés.
Cependant, si je fais ceci:
char *line = fgets(aFile);
NSString *stringObj = [NSString stringWithUTF8String:line];
library_function([stringObj UTF8String]);
Ensuite, tout fonctionne très bien et la chaîne est correctement émis.
Qu'est-ce que la ligne [NSString...
faire que je ne suis pas? Est-ce que je fais quelque chose de mal avec la façon dont la ligne est récupérée au départ? Ou est-ce autre chose entièrement?