Voici un code que j'utilise pour tirer un fichier texte dans un UITextView
appelé textView
.Comment puis-je extraire de manière fiable un fichier texte d'encodage inconnu dans un NSString sur un iPhone?
Parce que je ne peux pas toujours connaître le codage du fichier à l'avance, j'utilise la méthode -stringWithContentsOfFile:usedEncoding:error:
, qui stocke une valeur de codage par référence.
Une fois que je l'encodage, je puis ouvrez le fichier et, s'il y a une erreur, imprimer 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 UTF8, la La vue texte affiche correctement le contenu du fichier.
Sur un iPhone, si un fichier est codé en ASCII (NSASCIIStringEncoding
), puis-je obtenir une valeur de codage 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
Pour NSASCIIStringEncoding
je devrais obtenir une valeur de 1, et non 805.298.632.
La torsion est que, si j'ouvre le fichier via le simulateur, j'obtiens la valeur de codage correcte et la vue de texte affiche le contenu du fichier codé ASCII. Je pense que j'ai la syntaxe correcte, mais je suppose que j'ai raté quelque chose, peut-être évident. Qu'est-ce que je fais mal ici?
Avez-vous vérifié la (localisée) Description de l'erreur? – Eiko
Le fichier se trouve-t-il dans le dossier Documents de l'appareil? Peut-être vérifier qu'il est là en utilisant 'NSFileManager' – falconcreek
Oui, le fichier existe définitivement. Comme mentionné, si je code le fichier comme UTF8, le fichier sera affiché correctement dans la vue de texte. –