jeu de caractère

bofybofy Membre
10:55 modifié dans API AppKit #1
Bonjour

Je progresse doucement mais régulièrement.

J'ai une base PostGreSql. Je défini le mode UTF8 pour mes textes. Avec pgAdmin, je retrouve bien mes signes diacritiques où ils doivent être.

Je sais récupérer les données de ma base, mais l'affichage des données textuelles est débile : au lieu d'un "é" j'ai "n'importe quoi".

Help ? Merci

Réponses

  • CéroceCéroce Membre, Modérateur
    10:55 modifié #2
    Du code ? Merci.

    On a besoin de savoir comment tu crées tes NSStrings avant de les afficher.
  • bofybofy Membre
    10:55 modifié #3
    Ben...

    Y aurait-il plusieurs façons de créer des NSString ?

    NSString
    dans 1227292277:

    Du code ? Merci.

    On a besoin de savoir comment tu crées tes NSStrings avant de les afficher.
  • schlumschlum Membre
    10:55 modifié #4
    Oui... Certaines en précisant l'encodage en particulier !
  • bofybofy Membre
    10:55 modifié #5
    dans 1227447128:

    Oui... Certaines en précisant l'encodage en particulier !


    J'ai toujours eu du mal avec les caractères.
    Bon je récapitule.
    Je définis le codage UTF8 dans PostgreSQL, tout est ok dans pgAdmin les "é" s'affichent bien "é" (tout cela sur mon mac OSX).
    Normalement(?) les textes que je  récupère sont codés en UTF8.
    Si j'ai bien compris, l'encodage NSString de base est du UTF8 ?
    Pourquoi un "é" devient-il un "é" ?
  • NoNo Membre
    novembre 2008 modifié #6
    On se fout de savoir comment sont stockés les caractères dans une NSString.

    Par contre lorsque qu'on l'initialise avec une chaine de caractère extérieure, il faut préciser à  NSString comment est codée cette chaine.
    Par défaut, c'est MAC OS ROMAN, ce qui explique pourquoi quand tu stockes ton résultat Postgre, ça coince.

    Donc, tu dois utiliser les méthodes NSString qui spécifient l'encodage (dans ton cas, je pense qu'un stringWithUTF8String: / initWithUTF8String: sera suffisant (en supposant que tu utilises la lib C de Postgre, et que le résultat d'une requête est renvoyé sous forme d'un pointeur de char pour les colonnes de type alpha).
  • bofybofy Membre
    10:55 modifié #7
    dans 1227538373:

    On se fout de savoir comment sont stockés les caractères dans une NSString.

    Par contre lorsque qu'on l'initialise avec une chaine de caractère extérieure, il faut préciser à  NSString comment est codée cette chaine.
    Par défaut, c'est MAC OS ROMAN
    [c'est quoi par rapport à  utf ascii, et autres]
    , ce qui explique pourquoi quand tu stockes ton résultat Postgre, ça coince.

    Donc, tu dois utiliser les méthodes NSString qui spécifient l'encodage (dans ton cas, je pense qu'un stringWithUTF8String: / initWithUTF8String: sera suffisant (en supposant que tu utilises la lib C de Postgre, et que le résultat d'une requête est renvoyé sous forme d'un pointeur de char pour les colonnes de type alpha).


    J'ai essayé et ça ne marche pas, pas plus que les conversions que j'ai pu découvrir dans la doc.
    NB : c'est bien la lib C qui est utilisée par l'interface NKD.

    Ce que je ne comprends pas, c'est que l'interface NKD me renvoie une NSString (je me suis penché sur le code ...), alors quoi ?
  • NoNo Membre
    10:55 modifié #8
    Je ne sais pas ce que fait "l'interface NKD", mais il semble clair qu'elle ne produit pas correctement les NSString.
Connectez-vous ou Inscrivez-vous pour répondre.