Pbs de polices

mac_manumac_manu Membre
14:44 modifié dans API AppKit #1
Hello et help!!
J'ai un petit mais sérieux problème de font. Je m'explique: J'ai dans un objet, une mémoire NSString. Lorsque je la compare avec une autre chaà®ne où la met dans un champ TextField, les accents (aigu, grave etc...) sont reconnu normalement. (Mon code se trouve dans MyController). Maintenant, si je veux imprimer cette chaà®ne de caractères, je passe par une sous-classe de NSView, (code dans MyView) et losque je la teste via isEqualToString, dans mon exemple maString (= été)isEqualToString:@été me renvoi NO!! De plus, si je fais @été drawInRect:rect, et 2 é sont affichés par un symbole représentant la racine carré!! Par contre, si je mais ma variable maString drawInRect:rect, je ne rencontre aucun problème, les 2 é s'affichent correctement. Qui peut me venir en aide?? :'(

Réponses

  • ChachaChacha Membre
    août 2005 modifié #2
    Si t'as des problèmes avec la police, c'est toi que ça regarde, hein.

    Plus sérieusement, c'est un problème d'encodage de caractères, ça. Ton code source, il est en quoi ? En UTF-8, en MacOS Roman ? En tous cas, l'encodage de ton code source semble être différent de celui, interne, des NSString. Tant mieux, d'ailleurs, car il ne faut pas se fier à  l'encodage du code source.
    J'ai une solution : si tu tiens absolument à  écrire "été" dans ton code source, passe par les Localizable.strings :
    tu crées un fichier Localizable.strings, avec deux localisations (English et french). Ces fichiers doivent être en UTF-8.
    Dans la version English, tu mets
    "summer" = "summer"; (sans les @)
    et dans la version French, tu mets
    "summer" = "été";

    Et dans ton code, quand tu as besoin de "été", tu écris:
    NSLocalizedString(@summer, @summer);

    +
    Chacha

    [edit]
    Ouahaha, comment j'tai grillé, Renaud  :o >:)
    [/edit]
    [edit2]
    (corrigé le @summer)
    Pardon, m'sieur ! Allez, je vais reprendre des cours d'humilité, et tu peux me renvoyer les tomates.
    [/edit2]
    [edit3]
    Tu veux dire "un autre type" ? Hi hi
    [/edit3]
    [edit4]
    Mais nooon, t'as juste confondu avec "une espèce de", qui est d'ailleurs souvent employé(e?) sous la forme éronnée de "un espèce de ".
    [/edit4]

    [Fichier joint supprimé par l'administrateur]
  • août 2005 modifié #3
    Problème d'encodage, le code est en MacOSRoman, tout ce qui est dans dans l'UI est en Unicode.

    La solution serait de mettre toutes les phrases à  comparer dans le fichier [tt]Localizable.string[/tt] (note d'un puriste, ça devrait normalement être fait, ce n'est pô bien de laisser des infos 'localisées' dans le code).

    EDIT: grilled.

    EDIT^2: Peut-être, mais en attendant t'as laissé une fôte dans ton code (je parle pô d'orthographe pour une fois): NSLocalizedString("summer", "summer");

    EDIT^3: Pourquoi des tomates? Tu ne mérites pas ça, c'est réservé à  une autre type de délit. Je vais juste me contenter de te faire la morale: nono.gif

    EDIT^4: crybaby.gif. Comme punition je m'infligerai cette lecture.

    EDIT^5: de toute façon c'est bien connu que les belges font souvent des erreurs dans le genre quand ils parlent français... Ceci dit, pas de concours cette fois-ci, ce sera trop facile.
  • mac_manumac_manu Membre
    14:44 modifié #4
    Merci pour ces infos, mais quelque chose m'échappe quand même. Pourquoi lorsque je fais [maString drawInRect:rec], les accents sont justes, et lorsque je fais [@été drawInRect:rect], les accents sont faux?? NB, mon programme n'est pas encore localisé!

    PS En parlant de problèmes avec la police, je viens de recevoir une contravention  >:D pour eccès de vitesse... comme c'est ma femme qui avait la voiture ce jour-là , ça mais un peu de beurre sur les épinards
  • août 2005 modifié #5
    Quand tu fais [@été ..., tu demandes de tracer une phrase encodée en MacOSRoman dans un contexte qui est lui en unicode. Quand tu fais [maString..., tu restes en unicode toute le temps.
  • mac_manumac_manu Membre
    14:44 modifié #6
    Merci pour la clarification.

    Et si j'utilise: [NSString stringWithCString:cString encoding:NSUnicodeStringEncoding]; ?
  • ChachaChacha Membre
    14:44 modifié #7
    dans 1124964399:

    Merci pour la clarification.

    Et si j'utilise: [NSString stringWithCString:cString encoding:NSUnicodeStringEncoding]; ?

    Quitte à  faire ça, je verrais plutôt :
    <br />const char* cString = &quot;été&quot;; //noter l&#39;absence de @<br />NSString* s = [NSString stringWithCString:cString encoding:NSMacOSRomanStringEncoding]; //puisque c&#39;est sûrement MacOSRoman l&#39;encodage de ton code source<br />
    

    Mais ce n'est pas très satisfaisant, puisque cela repose encore sur l'encodage du code source, ce qui n'est pas (à  mon avis) une bonne pratique.

    +
    Chacha
  • mac_manumac_manu Membre
    14:44 modifié #8
    Pour finir, j'ai pratiqué de la façon suivante:

    NSString aString = [NSString stringWithCString:"doc dès " encoding:NSUTF8StringEncoding]

    et lorsque je fais [aString drawInrect:rect], l'accent grave (et les autres) s'imprime au poil!
Connectez-vous ou Inscrivez-vous pour répondre.