Voici un peu de code que j'utilise pour extraire un fichier texte dans un fichier de type UITextView
appelé textView
.
Comme je ne peux pas toujours connaître l'encodage du fichier à l'avance, j'utilise la méthode suivante -stringWithContentsOfFile:usedEncoding:error:
qui stocke une valeur d'encodage par référence.
Une fois que j'ai le codage, j'ouvre le fichier et, s'il y a une erreur, j'imprime quelques informations :
NSError *_error = nil;
NSStringEncoding _textEncoding;
NSString *_contentText = [NSString stringWithContentsOfFile:[baseURL path] usedEncoding:&_textEncoding error:&_error];
if (_error) {
NSLog(@" _error: %@", [_error userInfo]);
NSLog(@" _textEncoding: %d", _textEncoding);
}
textView.text = _contentText;
Sur un iPhone si le fichier est encodé en UTF8, la vue texte affiche le contenu du fichier correctement.
Sur un iPhone si un fichier est codé en ASCII ( NSASCIIStringEncoding
), j'obtiens alors une valeur d'encodage de chaîne étrange :
2010-07-23 02:57:46.786 App[9160:307] _error: {
NSFilePath = "/var/mobile/Applications/0AD83E02-7A2A-4665-8B8F-17E03EE12B9E/Documents/A+B.txt";
}
2010-07-23 02:57:46.791 App[9160:307] _textEncoding: 805298632
Para NSASCIIStringEncoding
Je devrais obtenir une valeur de 1, et non 805298632.
Le rebondissement est que, si j'ouvre le fichier via le simulateur J'obtiens la valeur d'encodage correcte et la vue texte affiche le contenu du fichier encodé en ASCII.
Je pense que j'ai la bonne syntaxe, mais je suppose que j'ai manqué quelque chose, peut-être évident. Qu'est-ce que je fais de mal ici ?