caractère accentué
tablier
Membre
J'ai l'impression de patauger. j'appelle une méthode avec l'argument: @Maurice André.
Que je code cela en Mac Os roman, UTF8 ou UTF16, le compilateur me renvoie l'erreur:
warning: non-ASCII character in CFString literal
Bien sur, c'est le "é" qui me fait Ch.... Comment doit-on écrire cela ?
Que je code cela en Mac Os roman, UTF8 ou UTF16, le compilateur me renvoie l'erreur:
warning: non-ASCII character in CFString literal
Bien sur, c'est le "é" qui me fait Ch.... Comment doit-on écrire cela ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si tu veux passer du texte accentué, le mieux qu'il y ait à faire, c'est de passer par un fichier strings
Tu crées un fichier Localizable.strings et tu mets par exemple : Et tu sauves ton fichier en UTF8.
Et ensuite dans ton code tu mets NSLocalizedString(@Nom,nil) là où tu veux ton texte.
Voilà
Ma question était relative à des noms propres qui ne sont jamais traduits! Dans ce cas le passage par un "NSLocalizedStringFromTable" parait inutile, mais je ne trouve pas la manière de m'en passer!
[tt]
NSMutableString *nom=[NSMutableString stringWithString:@Maurice Andr];
[nom appendString:[NSString stringWithUTF8String:"é\n"]];
[/tt]
Si ça marchait, il suffirait d'écrire
NSMutableString *nom=[NSMutableString stringWithUTF8String:@Maurice André];
Non, le truc c'est que le code source ne doit pas être en UTF8. Enfin, ça me semble à déconseiller.
+
Chacha
[NSString stringWithCString:"Maurice André" encoding:NSMacOSRomanStringEncoding]
Mais ça ne m'empêche pas de penser que mettre des données en brut dans le code n'est pas spécialement le plus adéquat. Il serait plus intelligent à mon sens de placer un plist dans les Resources de l'app. Tu devrais aussi pouvoir mettre un .strings directement dans Resources en fait.
Et puis les fichiers xx.strings ne sont pas obligatoirement localisés, il me semble avoir vu des fichiers strings hors de dossiers .lproj, non ?
Du moment qu'on précise quel fichier xx.strings on veut
Ce code fonctionne, j'avais fais des tests, et en une seule ligne comme tu fais, j'avais toujours le warning, tandis que le appendString fait bizarrement sauter ce warning. ??? Le "é" s'affiche correctement dans le log.
Le code de Renaud est lui sans warning, mais le "é" est remplacé par d'autres caractères dans le log.
Mais bon, il est vrai qu'il est plus "propre" de mettre ce genre de données dans un fichier dédié.
J'avais pas testé, c'est vrai, mais j'ai compris, en relisant.
Il y a une différence énooorme entre
[NSString stringWithUTF8String:"é\n"]
et
[NSString stringWithUTF8String:@é\n]
ça vient de là , j'avais pas vu.
+
Chacha
Mais finalement il vaut mieux faire avec CString que UTF8String si on ne met pas de @, non ?
Et du coup pourquoi le code de Renaud (initWithCString:encoding:) ne fonctionne-t-il pas ?
[tt]
[NSString stringWithCString:"Maurice André" encoding:NSMacOSRomanStringEncoding][/tt]
donne[tt]
Maurice Andr?©
[/tt][tt]
[NSString stringWithCString:"Maurice André" encoding:NSUTF8StringEncoding][/tt]
donne[tt]
Maurice André
[/tt]
Je souhaite faire remarquer que dans les préférences, dans le panneau "editing", il y a possibilité de changer le codage par défaut des fichiers sources, et que l'on peut également changer individuellement le codage d'un fichier dans son paneau d'information.
Je pense donc que le compilateur est capable de s'adapter au codage des fichiers sources.
La question est différente pour les fichiers qui sont copiés dans les ressources sans être lus.
Merci de vos réponses.