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

Langage PHP Discussion :

Affichage caractères spéciaux


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Points : 10
    Points
    10
    Par défaut Affichage caractères spéciaux
    bonjour à tous ,

    je bloque sur un affichage d'une page
    je récupère les infos depuis une serveur radio , mais celui ci est bizarre car il aime pas les é,à,è etc....
    du coup pour afficher ce nom d'artiste 'Jhené Aiko' par il me sort un beau 'JhenГ© Aiko'

    j'ai voulu avec str_replace remplacer le Г© pour avoir un é mais pas moyen , ou encore un Ð’Ò‘ qui doit etre un '
    pour info, les infos récupéré sont stocké dans une base txt , et après je vais relire à la demande la base

    une piste ? une idée pour virer ses caractères bizarres sachant que je peux pas toucher au serveur qui est pas à moi


    Amicalement Pascal

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Je pense que ce que t'envoie le serveur est correcte mais que c'est ta page qui ne l'affiche pas bien: il faut préciser l'encodage correcte (utf-8) dans ta page html en mettant:<meta charset="utf-8"/> entre les balises <head></head>.

    Si ce n'est pas ça, dans tous les cas ce n'est pas en faisant des remplacements que tu résoudras un problème d'encodage.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    non justement le serveur renvoi pas bien l'info justement et l'affiche comme ca , des que je peux je fais capture

    j'ai mis votre code dans le head
    maintenant le é arrive ainsi BeyoncГ© a la place de Beyoncé
    ça a changé mais est toujours illisible

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Un serveur n'affiche rien, il se contente de transmettre des informations, c'est le navigateur qui va afficher les données selon l'encodage qu'on lui fournit via le code html ou en utilisant un encodage par défaut.
    j'ai mis votre code dans le head
    maintenant le é arrive ainsi BeyoncГ© a la place de Beyoncé
    Ok, surtout laisse bien la balise meta là où tu l'as mise. Il y a eu un mauvais encodage en amont, pour le corriger tu vas convertir ta chaîne dans l'encodage WINDOWS-1251 (une table de caractères pour le cyrillique), ce qui va restituer le code correct de l'encodage utf-8 d'origine et ça devrait être bon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = mb_convert_encoding($str, 'WINDOWS-1251', 'UTF-8');
    ou bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = iconv('UTF-8', 'WINDOWS-1251', $str);


    Voilà ce qui a du se produire:

    Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // utf-8           é
    // code            c3     a9  <-- codage correct d'origine en utf-8
    // ---------------------------------
    // windows-1251    Γ © <-- mais interprété selon le codage pour le cyrillique
    // ---------------------------------
    // utf-8           d0 93 c2 a9 <-- pour être ré-encodé en utf-8
    // ---------------------------------
    // windows-1252    Ð  “  Â  © <-- interprétation par ton navigateur en l'absence de la balise <meta charset="utf-8"/>

    (le Γ c'est bien sûr le caractère Г mais impossible de l'afficher dans la partie code, va savoir pourquoi!)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    bonjour ,
    donc j'ai laissé la balise au début de ma page
    puis sur la VAR_titre & la VAR_artiste j'ai ajouté ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $le_titre1 = mb_convert_encoding($le_titre1, 'WINDOWS-1251', 'UTF-8');
    $le_nom1 = mb_convert_encoding($le_nom1, 'WINDOWS-1251', 'UTF-8');
    ?>
    "Music Title":"<?php print $le_titre1; ?>","Chanteur":"<?php print $le_nom1; ?>","time":"<?php print $heure; ?>"
    je vais laisser tourner le code , la suite cet apres midi

    @micalement Pascal

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Pour l'encodage il faut que toute la chaîne soit sur la même longueur d'onde (rapport à la radio )
    C'est à dire , que si la page web qui affiche est en utf-8, alors les données doivent l'être aussi. Si ce n'est pas le cas il faut faire des conversions.

    La première étape est donc de définir dans quel encodage tu veux ta page.
    Si c'est utf8 il faut effectivement ajouter le meta approprié mais aussi que le fichier soit encodé en utf8.

    A partir de là si tout est bon , on peut s'attaquer aux données recues.
    Si elle sont utf8 => rien à faire ca va s'afficher correctement
    Si pas utf8 => on peut commencer par tenter un simple utf8_encode($data)Si pas utf8 et encodage particulier => il faut faire une conversion via mb_convert_encoding en connaissant l'encodage initial.

    Reste le cas ou ta page n'est pas en utf8 et les données recues le son , où en général on arrive à se débrouiller avec utf8_decode()

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Citation Envoyé par grunk Voir le message
    Si elles sont utf8 => rien à faire ça va s'afficher correctement
    Non, pas dans ce cas là, car les données reçues sont bien encodées en utf-8. Le problème c'est qu'il y a eu une mauvaise conversion, une conversion inutile effectuée avant la réception des données qui a transformé un "é" (utf-8) en "Г©" (utf-8 également), or la seule conversion susceptible de produire un tel résultat est une conversion de windows-1251 vers l'utf-8.

    Pourquoi windows-1251? Parce que c'est l'une des rares tables, avec Amiga-1251 (sa variante Amiga) et STRK1048 (sa variante kazakh), où la lettre "Г" (U+0413 CYRILLIC CAPITAL LETTER GHE) est encodée en c3 (le premier octet de "é" en utf-8).

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Juin 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ouvrier

    Informations forums :
    Inscription : Juin 2017
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    bonjour à tous ,
    alors le code au dessus marche j'ai les é maintenant plus de caracteres bizarre

    la page ou je vais chercher les infos vient d'un serveur Icecast2 , il créé un fichier xspf ou je fais chercher les infos que j'ai besoin
    mais le serveur revoit pas bien les éà etc .....
    du coup le fichier xspf à le bug

    pourtant la page icecast est bien en utf-8
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    je pense plus a un bug interne à icecast qui fait faire ce bug , peut etre lié aux httpS , car moi aussi j'ai un serveur icecast (http) et aucun soucis .

    du coup ça fonctionne
    merci pour l'aide .... curieux quand meme ce codage

    voici justement l'affichage sur la page Icecast
    Nom : tmp5841.png
Affichages : 80
Taille : 27,1 Ko

Discussions similaires

  1. Affichage caractères spéciaux
    Par fabpeden dans le forum C
    Réponses: 2
    Dernier message: 10/05/2007, 17h51
  2. [MySQL] Problèmes affichages caractères spéciaux
    Par jim1 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/04/2007, 15h01
  3. Affichage caractère spéciaux
    Par nicoaix dans le forum Langage
    Réponses: 9
    Dernier message: 19/05/2006, 12h09
  4. Affichage caractéres spéciaux dans une alert.
    Par nebule dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/05/2006, 13h51
  5. [Delphi+Access] Pb affichage caractère spéciaux
    Par fred64 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/06/2004, 10h53

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