IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] Caractères spéciaux non affichés


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Points : 90
    Points
    90
    Par défaut [XML] Caractères spéciaux non affichés
    Dans le but de créer une appli de classement de livres, je souhaite récupérer des notices sur internet, avec le service web d'Amazon AWS , qui permet de piocher dans sa base via des fichiers XML, mais il y a un hic :
    Le fichiers est défini en utf-8 <?xml version="1.0" encoding="UTF-8"?> , j'ai donc utilisé utf8_decode pour afficher correctement le texte, mais je me rends compte qu'il y a quelques caractères spéciaux non-convertis comme œ ? J'ai bien eu l'idée d'essayer htmlspecialchars mais aucun résultat concluant, car il s'agirait de transformer des caractères en balises html... ce n'est pas mon but !
    Si personne ne répond à votre question, c'est peut-être parce qu'il n'y a pas de solution

  2. #2
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Slt
    Ton document (php je suppose) chargée de reccueillir des données xml, devrait avoir ce header.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=utf-8');
    Si tu dois sauvegarder ces données sur une base de données ( toujours utf-8) , compléte avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SET NAMES 'utf8'");
    Echappe tes chaînes avec :

    Et pour les signes"< et> qui pourraient se balader dans les chaînes pourraient être confondus avec le balisage des noeuds xml.
    Donc les réduire à nul.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $S1 = array("<", ">");
    $S2 = array("", "");
    $tontexte = str_replace($S1, $S2, $tontexte);
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  3. #3
    Membre régulier Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Points : 90
    Points
    90
    Par défaut
    Pourquoi faire simple... qd on peut faire compliqué : je n'avais pas pensé qu'UTF8 pouvé être utilisé directement dans le "header" !

    Au temps pour moi, en revanche il faut que je convertisse le reste de mes page pour que ça marche, mais je ne peux pas vraiment tout transformer en UTF-8, car j'ai déjà pas mal de pages.

    Aurais-tu une idée pour faire passer de l'UTF8 en ISO-8859-1 sans trop charger le temps de traitement ? Ca me parait assez impossible mais à tout hasard ?
    Si personne ne répond à votre question, c'est peut-être parce qu'il n'y a pas de solution

  4. #4
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Le probléme est que tu récupéres des noeuds xml sur une base distante et le header est prédéfini en utf-8.
    Par conséquent tu ne peux pas modifier ce header à la volée.

    Une première alternative consisterait à enregistrer ces données sur ta base de données (utf-8), pour recréer ensuite un fichier xml encodé ISO-8859-1, ce qui pourrait t'éviter de modifier les fichiers qui les exploitent.
    Un seconde, qui consisterait à un créer script php "maison" qui récupére ces données xml et qui recrée le même avec un header ISO-8859-1 correspondant à ton applic.

    Pour ta gouverne, le probléme est fréquent quand on utilise 2 types d'encodage et me suis rendu compte des difficultés ou des anomalies que celà pouvait générer.
    Pour m'éviter ces désagréments, j'ai définitivement migré toutes mes applic au format utf-8, scripts et base de données.
    Plus de soucis depuis, en tout cas c'est l'idéal, sachant que l'utf-8 devient un format d'échange de plus en plus répandu .
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  5. #5
    Membre régulier Avatar de youtch
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 94
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par alain31tl Voir le message
    Un seconde, qui consisterait à un créer script php "maison" qui récupére ces données xml et qui recrée le même avec un header ISO-8859-1 correspondant à ton applic. .
    Merci , je crois que je vais voir si cette solution est assez rapide pour être mis en place. Par la suite, je crois aussi m'orienter vers l'Utf8 comme standard de mes pages !
    Si personne ne répond à votre question, c'est peut-être parce qu'il n'y a pas de solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datatable caractères spéciaux non affichés
    Par Allegro dans le forum jQuery
    Réponses: 2
    Dernier message: 01/02/2013, 21h28
  2. [MySQL] caractères spéciaux non affichés
    Par Tikenjahfakouli dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/05/2008, 11h54
  3. Réponses: 3
    Dernier message: 24/10/2006, 11h56
  4. [.net] Caractères spéciaux non reconnus
    Par akrodev dans le forum MFC
    Réponses: 3
    Dernier message: 04/05/2006, 22h08
  5. [XML] caractères spéciaux dans un type NMTOKEN
    Par norkius dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 08/09/2004, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo