Encore des problèmes d'encoding...
olof
Membre
Salut tous !
Dans mon code, je créé un fichier XML. Je construis ce document dans une NSMutableString et j'écris le document de la manière suivante :
Quand j'ouvre ce fichier test.xml dans xCode, les caractères accentués sont illisibles. Si je fais 'Get info' dans le menu contextuel, sous encoding j'ai : No Explicit File Encoding et si je change cette valeur et j'y mets UTF-8, et que je répond 'Reinterpret' à la question qu'il me pose, tout est ok.
Comment faire pour réellement créer un fichier avec l'encodage UTF-8 depuis Cocoa ???
Merci !
Dans mon code, je créé un fichier XML. Je construis ce document dans une NSMutableString et j'écris le document de la manière suivante :
<br />NSData *vData = [myStringXML dataUsingEncoding:NSUTF8StringEncoding];<br />[vData writeToFile:@"test.xml" atomically:YES];<br />
Quand j'ouvre ce fichier test.xml dans xCode, les caractères accentués sont illisibles. Si je fais 'Get info' dans le menu contextuel, sous encoding j'ai : No Explicit File Encoding et si je change cette valeur et j'y mets UTF-8, et que je répond 'Reinterpret' à la question qu'il me pose, tout est ok.
Comment faire pour réellement créer un fichier avec l'encodage UTF-8 depuis Cocoa ???
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si tu créés un fichier en utf8, les caractères seront codés en utf8.
Mais si tu ouvres ce fichier dans un éditeur qui s'attend à lire du mac-roman, alors les caractères utf8 seront interprétés en mac-roman...
Xcode, pour les fichiers qu'il gère mémorise l'encodage (au niveau du projet). Par contre, pour les fichiers externes, comme il ne peut connaà®tre l'encodage, alors il prend celui par défaut (voir préférences de Xcode, section Text editing, Default file encoding).
Donc, ce n'est pas parce que tu vois "mal" dans Xcode que ton fichier est mal encodé.
Enfin, dans ton cas, il est impératif de mentionner l'encodage au niveau xml.
.
J'explique mon cas en deux mots. J'ai une petite appli qui gère ma cave à vin. Je n'ai pas envie de me prendre la tête pour l'impression alors je me dirige vers un export XML et une transformation XSLT (-> HTML ou PDF). Qu'est-ce que vous me conseillez comme encodage à utiliser sachant que les caractères "spéciaux" seront des caractères accentués français ?
ISO-latin-1 (ISO-8859-1) ??? Ou autre ???
Merci
C'est pas une obligation mais c'est celui par défaut dans les documents XML, et le plus universel.
Donc même si ISO-Latin-1 suffirait pour les caractères "spéciaux" que tu as, autant utiliser ceux qui sont utilisés en XML dans 99% des cas.
Par exemple, dans mon cas, j'utilise l'application TestXSLT de Marc Liyanage (ici : http://www.entropy.ch/software/macosx/#testxslt). L'affichage du fichier XML ne tient pas compte de l'UTF. Pire, avec le parser Sablotron, ça fait même quitter l'appli... Par contre, en iso-8859-1, tout baigne. Ca fait quand même réfléchir, non ??
Tu peux mettre un extrait de code pour montrer comment tu construis ton fichier ?
Deuxième vérification, lecture avec un éditeur hexa-décimal. Les caractères accentués prennent bien deux octets dans la version UTF-8.
Je pense que j'ai du faire des mauvaises manipulations lors de mes premiers tests... Désolé....
Merci pour le coup de main !
Si tu as des pbs d'accents c'est que le fichiers n'a pas été enregistré en UTF-8 et là c'est plus vraiment ton problème.
Sinon pour tout ce qui est format TXT, j'encode en ISOLatin1 pour les accents et j'ai toujours pas rencontré de problèmes.
Pour les fichiers HTML/PHP je fais aussi en ISOLatin1 mais là ça dépendra de l'encodage aussi choisi dans le navigateur web (par défaut ISOLatin1 pour les français). Enfin au départ y'a un codage HTML des accents (é = é è = è etc...) donc si le mec suit pas ça.. c'est plus ton problème non plus.
Si je fais comme ça :
ça fonctionne sous Smultron (et il me dit bien que l'encodage est de l'ISOLatin1), mais en revanche sur l'iPod, ç'est pas bon.
Et si je fais ça :
ça ne passe ni sur Smultron, ni sur l'iPod.
Alors que si je fais un fichier en ISOLatin1 avec Smultron, ça passe sur l'iPod...
Là j'avoue que je sèche.
Les é n'est pas une notation HTML, mais c'est que c'est des raccourcis XML. Si tu défini ton propre DOCTYPE tu peux créer tes propres raccourcis XML (ils commencent tous par & et finnissent par .