Décodage JSON

CeetixCeetix Membre
07:21 modifié dans API UIKit #1
Salut tout le monde.


Voilà , je suis en train de faire du parsing JSON mais avant de le réaliser il faut que je télécharge tout ça sur le web.
Je le fais mais j'ai des caractère assez bizarre qui viennent se coller dans le texte (on peut aussi les voir juste en tapant la requête dans la barre d'adresse de Safari).


Je vous joins une capture d'écran. On met dit que c'est du à  l'encodage JSON et que ça deviendra normal après décodage via l'iPhone mais là  je vois pas trop comment ...  ???
Avez-vosu déjà  été confronté à  ce genre de souci ?


Merci !

Réponses

  • AliGatorAliGator Membre, Modérateur
    novembre 2010 modifié #2
    - "\u00e9" c'est le codepoint Unicode de la lettre "é" et "\u00fb" c'est le codepoint de "ô" en ISO-8859-1. C'est NSLog qui t'affiche ça dans la console car il ne sait pas correctement afficher tous les caractères Unicode dans la console qui est plutôt faite pour afficher des messages de logs en ASCII en général. Donc ça c'est normal et si tu affiches ce texte autre part comme dans un UILabel de ton interface par exemple, il s'affichera normalement, UIKit sachant très bien afficher l'Unicode contrairement à  la console.
    - [tt]�[/tt] par contre c'est une entité XML/HTML (un peu comme "é" ou "à" si tu connais pour avoir fait du HTML...), ce n'est à  priori pas très logique que ton serveur te retourne, quand il te retourne du JSON, des chaà®nes échappées via cet encodage. S'il te retournais les résultats en XML, là  oui il faudrait qu'il échappe les caractères Unicode par ce type d'échappement, mais là  c'est du JSON, pas du XML, donc ton serveur te retourne pas ce qu'il faut ici.

    Après si c'est un bug serveur que tu ne peux pas corriger car tu n'as pas la main sur le serveur, tu peux toujours demander à  le décoder pour le remplacer par les bons caractères, pour contourner le bug, mais normalement ce n'est pas à  toi de le faire c'est au serveur de te retourner un texte bien formatté directement. D'autant plus que ce code 65533 correspond à  un caractère bien étrange, à  se demander ce qu'il fait dans ton texte...
  • CeetixCeetix Membre
    07:21 modifié #3
    - Pour le premier point j'ai vite fait mis mon texte brut dans un label et j'ai toujours ces caractères :(

    - Pour le deuxième points oui je connais et je n'ai pas la main sur le serveur, je vais voir ça avec l'admin.
  • CeetixCeetix Membre
    07:21 modifié #4
    J'up un peu pour le 1er point. Si quelqu'un a une idée ? :)
  • CeetixCeetix Membre
    07:21 modifié #5
    J'up ce sujet car au final l'admin à  changer le texte et tout s'est bien passé mais là  je bosse sur un autre projet et pr contre l'admin ne peut rien faire -_-
    J'ai ce type de caractère : \U008e
    Dans les label en gros il supprime le caractère (Genre je vois dans la console : F\U008ed\U008eration. Et dans le label : Fdration). J'ai cherché à  fond mais j'arrive pas du tout à  me sortir de ce problème.
  • StephSteph Membre
    07:21 modifié #6
    J'ai eu ce genre de souci avec TBXML, je me suis fait une fonction qui parcours la chaine et remplace tous les caractères.

    Elle ressemble à  ça :

    - (NSString *)charParser:(NSString *)stringToParse {<br />	<br />	NSDictionary *replacements = [NSDictionary dictionaryWithObjectsAndKeys:<br />				&nbsp; @&quot;&#039;&quot;, @&quot;&#38;#8217;&quot;,<br />				&nbsp; @&quot;-&quot;, @&quot;&#38;#8211;&quot;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot;...&quot;, @&quot;&#38;#8230;&quot;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot; &quot;,@&quot;&#38;#160;&quot;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot;&#092;&quot;&quot;,@&quot;&#38;#171;&quot;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot;&#092;&quot;&quot;,@&quot;&#38;#187;&quot;,<br />								&nbsp; nil];<br />	<br />	NSMutableString *string = [stringToParse mutableCopy];<br />&nbsp; &nbsp; for (NSString *target in replacements) {<br />		[string replaceOccurrencesOfString:target withString:[replacements objectForKey:target] <br />								&nbsp;  options:0 range:NSMakeRange(0, [string length])];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return [string autorelease];<br />	<br />}<br />
    
Connectez-vous ou Inscrivez-vous pour répondre.