modifier l'encodage des NSString d'un tableau ou un dico
chaps31
Membre
Encore moi, bavard ce soir,
Je m'arrache les cheveux sur un problème. J'ai une base de donnée postgresql ou les champs textes sont en UTF8, pour rentrer le valeurs sans problème, juste avant l'exécution de la requête je la passe à la moulinette de :
mais lorsque je les rapatrie les accents sont remplacés par des signes... Problème d'encodage...
Je ne trouve nulle part (y compris dasn AppKiDO) comment modifier l'encodage des champs d'un tableau ou d'un dictionnaire, en sachant en plus que certains champs sont des integer...
Je m'arrache les cheveux sur un problème. J'ai une base de donnée postgresql ou les champs textes sont en UTF8, pour rentrer le valeurs sans problème, juste avant l'exécution de la requête je la passe à la moulinette de :
NSString *strUpd=[NSString stringWithCString:[updPG UTF8String] encoding:NSMacOSRomanStringEncoding];
mais lorsque je les rapatrie les accents sont remplacés par des signes... Problème d'encodage...
Je ne trouve nulle part (y compris dasn AppKiDO) comment modifier l'encodage des champs d'un tableau ou d'un dictionnaire, en sachant en plus que certains champs sont des integer...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu lui demandes d'interpréter des données UTF8 en MacOS (interpréter, pas convertir), donc forcément ce qui est renvoyé risque d'être un peu n'importe quoi, non ?
Merci
Sauf si les données d'origine sont déjà du MacOS Roman corrompu en UTF-8
Je ne comprend pas pourquoi la ligne vous semble si insensée... Je suis bien dans mon bac à sable
Je reprend un ancien projet et revois son code, notamment pour l'accès à une base de donnée, j'intègre un framework qui n'existait pas avant, ce qui, vous vous en doutez allège mon code... J'avais résolu le problème de l'encodage la dernière fois, et il faut recommencer...
En effet pour une bonne gestion des accents il faut que j'encode le texte en UTF8 avant de rentrer dans la base, mais du coup lorsque je ressort les données j'imagine qu'il faut que je fasse un , mes problèmes viennent peut-être du retour. Sauf que maintenant les données arrivent sous forme de dico que je mets dans un tableau et j'aimerais pouvoir modifier d'un coup tous les UTF8 du dico (ou du tableau) mais qui ne contient pas que des données en UTF8... Passer chaque valeur n'est pas très élégant...
Ceci dit lorsque je regarde la base, les accents sont remplacés par des signes, je ne sais pas si c'est normal...
Bref je fais de la brasse coulée...
Si je me souviens bien, cette ligne de code est un patch (sale) permettant de corriger un bug du framework qui sort des données soi-disant UTF-8 mais qui sont en fait MACOS ROMAN (un NSString corrompu en gros, et ça permet de corriger la corruption).
Mon ancien code réinterprète l'UTF8 de la base et me sort les é è... très bien, é è rentrés avec mon nouveau code, donc dans la base c'est bon, il faut que je trouve un moyen élégant de passer correctement du UTF8 à un NSString pour un dico ou un tableau. Je cherche et suis preneur de toute idée...
Un NSString se suffit à lui même ; quand il est utilisé, c'est avec son encodage interne.
Le seul problème, c'est qu'apparemment ce que tu reçois n'est pas de l'UTF-8.
Donc fais afficher "updPG" (une chaà®ne avec un "é" par exemple), et montre ce que ça donne.
C'est quoi ça :)beta:
C'est "é" qui a été codé en UTF-16
"é" étant lui même la représentation MAC OS ROMAN du codage UTF-8 pour "é"
Non, il ne s'agit pas de cela. Mais c'est effectivement toi qui m'avait aidé à contourner ce bug
Ce dernier a été corrigé.
Quant aux implementations dont parle chaps31, elles sont issues de mon code (une fois de plus avec l'aide des membres du forum)
Elles servent à convertir l'UTF-8 de la base en MacRoman et vice versa.
Evidemment, si chaps31 à initialisé sa base en UTF-16, il faut revoir ce code.
Il y a certainement une manière plus élégante de réaliser cela mais bon ça fonctionne très bien comme ça.
La conversion, c'est quand on a une chaà®ne correcte dans un encodage A et qu'on la passe en une chaà®ne correcte dans un encodage B
La réinterprétation c'est quand on a une chaà®ne incorrecte (représentation par un encodage B d'un encodage A)
PS : je sais il faut que je mette des release