2010-04-28 3 views
1

J'utilise libxml2 dans mon application iPhone. J'ai un NSString qui détient le chemin d'accès à un fichier XML. Le chemin d'accès peut inclure des caractères non-ASCII. Je veux obtenir une représentation en chaîne C du NSString pour passer à xmlReadFile(). Il semble que cStringUsingEncoding me donne la représentation que je cherche. Je ne suis pas clair sur quel encodage utiliser.NSStrings, chaînes C, chemins et codages dans l'iPhone

Je me demande s'il y a un encodage "par défaut" dans iPhone OS que je peux utiliser ici et que je peux m'assurer que je peux faire un aller-retour avec des chemins non-ASCII.

Répondre

1

Utilisez le fileSystemRepresentation de NSString. Si la chaîne contient des caractères qui ne sont pas représentables dans l'encodage du système de fichiers, cette méthode déclenche une exception.

Pour reconvertir, utilisez stringWithFileSystemRepresentation:length:

+0

Je remarque de NSFileManager que la documentation vous lien vers dit: « Cette méthode fonctionne en remplaçant les caractères de chemin abstraits et séparateur d'extension («/» et « » respectivement) avec leurs équivalents pour le système d'exploitation. " Je remarque qu'il ne mentionne pas de caractères non-ASCII. – iter

+0

@iter: Cela serait probablement dû au fait que les systèmes de fichiers ne définissent généralement pas de significations spéciales pour les caractères non-ASCII, de sorte qu'ils n'obtiennent aucun traitement spécial à cet égard. Qu'attendiez-vous qu'il dise d'eux? – Chuck

+0

Sur mon Mac, je l'ai juste essayé en utilisant un NSString contenant '' .txt', et en utilisant le résultat de 'fileSystemRepresentation' dans un appel à' fopen' travaillé un régal. Pourquoi es-tu sceptique à propos de cette méthode? – dreamlax