2011-01-08 3 views
2

Je vous écris une chaîne à un fichier comme ceci:TextEdit ne reconnaît pas l'encodage

NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *path = [docsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", nameOfFile]]; 

[fileString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

Pour une raison quelconque, TextEdit ne reconnaît pas le NSUTF8StringEncoding. Comment puis-je m'assurer que c'est le cas?

apprécierait un peu d'aide, Fabian

+0

Vous ne montrez pas l'initialisation NameOfFile mais en supposant que est correct qui devrait fonctionner. Aller à Terminal et faire 'chat nom de fichier.txt' pour voir il ya des données réelles dans le fichier, et aussi vérifier les préférences de TextEdit peut-être l'encodage d'ouverture de fichier, etc ne sont pas corrects? Essayez aussi de passer un objet NSError au lieu de NULL peut-être qu'il y a une erreur là-bas;) – nacho4d

+0

@ nacho4d Il y a des données là dedans :) J'ai même coché 'xattr -l file.txt' et' com.apple.TextEncoding' est réglé sur 'utf-8'. – fabian789

Répondre

1

Je viens de vous recréée code et il fonctionne très bien pour moi. TextEdit peut lire le fichier très bien.

#import <Cocoa/Cocoa.h> 

int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

    NSString *fileString = @"Blah blah."; 
    NSString *nameOfFile = @"blah"; 
    NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *path = [docsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", nameOfFile]]; 
    printf("fileString:\n%s\n", [fileString UTF8String]); 
    printf("docsDirectory:\n%s\n", [docsDirectory UTF8String]); 
    printf("path:\n%s\n", [path UTF8String]); 
    /* 
    fileString: 
    Blah blah. 
    docsDirectory: 
    /Users/daniel/Documents 
    path: 
    /Users/daniel/Documents/blah.txt 
    */ 
    [fileString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 
    [pool release]; 
    return 0; 
} 

La seule chose que je peux penser est vos préférences TextEdit, voici le mien: alt text

+0

pourriez-vous mettre des caractères spéciaux dans votre chaîne, comme öäü? – fabian789

+0

Fonctionne toujours pour moi. Preuve: http://i.imgur.com/hDATD.jpg –

+0

Doit définir les "fichiers d'ouverture" aussi pour le faire fonctionner. Merci – fabian789