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 :

en finir avec les problemes d encodage


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut en finir avec les problemes d encodage
    Bonjour,

    tout est dans le titre, voila 8 ans que je fais du PHP de maniere quasi quotidienne et l un des problemes les plus récurrents sont les problemes d encodage de chaine de caracteres

    en effet, plein de parametres entre en compte :

    - encodage des fichiers xml , html ou php retourné par le serveur (apache ou autre)

    - encodage décrit explicitement dans les fichiers html ou xml ( ex : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> )

    - encodage des fichiers sources eux meme lors de la sauvegarde (attention si le projet est réalisé par plusieurs dev sur différents editeurs et systemes : windows, mac, linux...)

    - caprice des navigateurs, parfois en ajax, avec certains libs l encodage interprété en JS n est pas le meme suivant les navigateurs !

    - encodage dans les emails que tu envoie en PHP suivant les clients mail (outlook 2007 ou 2003,thunderbird, webmails etc...)


    Bref un gros bordel

    Comment peux on s en sortir ? personnellement je cherche encore...

    j ai des pistes :

    - écraser l encodage serveur via header('Content-Type: text/html; charset=xxxx')

    - spécifier un encodage dans les fichier html ou xml (<meta http-equiv="Content-Type" ...)

    -utiliser htmlentities quand ma sortie est html

    - toujours utiliser le meme encodage dans mes fichiers sources


    malgré cela , les problemes arrivent toujours a un moment ou l autre... des fois tout va bien sur le serveur de dev et chez le client c est la cata ...


    je veux donc bien des échanges de techniques d avis eclairés (developpements elaborés utilisant php et ajax , testé sur differentes config serveur)

    au niveau des normes et langages, a quand une norme que un codage de chaine de caracteres standardisé , capable de s auto décoder ?

  2. #2
    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 : 39
    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 222
    Points
    20 222
    Par défaut
    Perso ca fait quelques années que je bosse exclusivement en utf-8.
    - Fichier encodés en utf8 (sans BOM)
    - Charset des pages en utf8
    - Bdd en utf8 (une requete SET CHARACTER SET utf8 , pour être bien certain du resultat)
    - Urlencode sur les param AJAX pour éviter les souçis

    Et je n'ai aucun problème. Les seul petits souçis qu'il peut exister c'est quand je travail avec des données externe auquel cas un utf8_encode sur la sortie règle bien souvent le problème.
    Sur un même projet tu ne dois pas avoir différent encodage. Ca fait partie des prérequis que les développeur doivent respecter.

    Quant au charset serveur, il ne m'a jamais posé problème.

    L'utf8 tend à s'imposer. Toutes les libs sont codé en utf8. Rester en iso est à mon avis source de problème.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    ta réponse a du sens , mais tu travailles seul ?

    dans mon environnement, je récupère tout un tas de data de l extérieur (fichier xml ou word, powerpoint remplis par des chefs de projets ou traducteurs) , connexion a des webservices externes, édition de fichiers source par developpeur externe a ma boite qui n utilise pas forcement le même soft ni le meme OS que moi (windows, linux , mac) , donc meme en voulant bien faire c est pas évident.

  4. #4
    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 : 39
    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 222
    Points
    20 222
    Par défaut
    Citation Envoyé par venomelektro Voir le message
    ta réponse a du sens , mais tu travailles seul ?

    dans mon environnement, je récupère tout un tas de data de l extérieur (fichier xml ou word, powerpoint remplis par des chefs de projets ou traducteurs) , connexion a des webservices externes, édition de fichiers source par developpeur externe a ma boite qui n utilise pas forcement le même soft ni le meme OS que moi (windows, linux , mac) , donc meme en voulant bien faire c est pas évident.
    Je travail beaucoup avec des flux externes aussi. Pour ma défense il sont souvent anglosaxon donc souvent en utf8.
    Je travail aussi avec un autre développeur,un intégrateur et parfois des traducteur. Avant mon arrivé c'était exactement ce que tu décris. J'ai juste imposé un encodage de fichiers. Ca été un peu dure au début surtout que les outils n'était pas les bons. (on ne développe pas de gros projet avec np++ ...).
    Pour les traducteurs pas de problème. Fichier de lang au format getText encoder en utf8. Le traducteur à juste à l'ouvrir avec poedit et faire son taf.

    Après forcément si tu boss avec des intervenants externes a qui tu ne peut pas "imposer" une méthode travail et que chacun y va de son encodage , je crains qu'il n'y est pas de solutions miracle.
    Peut être en adaptant ton fichier qui va aller lire un encodage particulier pour ensuite pouvoir le convertir facilement vers ton encodage.

    Par exemple ton site est en utf8.
    Tu dois aller lire un flux en iso. Ton php à un header iso pour lire sans erreur le flux. Puis tu retourne le résultat de la lecture convertit en utf8 pour qu'il s'affiche correctement sur tes pages en utf8.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    ok , j essayerais de sauver les fichier en utf8 , on verra si ca cré pas de soucis avec les autres intervenants des projets.

    d autres feedbacks ?

    en fait le seul truc que je pratique pas dans ce que tu as cité c est l encodage des fichiers source en utf8, pour le reste , meme techniques...

    je vais te citer encore un exemple :

    j ai un site avec des pages html en utf8, aucun probleme a l affichage , ni dans les resultats google etc...

    j ai des boutons share on facebook et digg

    sur le bouton facebook, aucun probleme, facebook grabbe correctement le titre et la desc de la page lors du partage.

    pour digg, c est la cata, j ai des mots du genre "Télécharger" et j ai beau jouer du utf8_encode, decode le probleme ne se fixe pas..

  6. #6
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Salut,

    En général, j'uniformise mes fichiers, ma base et mes charset. Les seuls problèmes que j'ai proviennent des sources externes (dont les JS et l'Ajax par exemple).

    Je pense que les fonctions mb_detect_encoding et mb_convert_encoding sont une vraie solution aux problèmes d'encodage...
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je pense que les fonctions mb_detect_encoding et mb_convert_encoding sont une vraie solution aux problèmes d'encodage...
    J'ai une experience contraire : mb_detect_encoding n'était pas fiable.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par sabotage Voir le message
    J'ai une experience contraire : mb_detect_encoding n'était pas fiable.
    idem : sur un projet recent, mb_detect_encoding me retourne utf8 sur deux serveur prod et preprod a peu pres identique (package dotdeb sous debian)

    preprod : je dois passer par utf8_decode pour avoir ma string affiché correctement dans mes facebox (js/ajax donc)

    prod : je dois pas le faire

    je cherche encore la différence entre les conf des deux serveurs pour comprendre...

Discussions similaires

  1. Réponses: 27
    Dernier message: 28/08/2012, 13h06
  2. toujours avec les problemes des composants IBX
    Par aimer_Delphi dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/10/2011, 18h27
  3. En finir avec les droits UNIX ?
    Par renaud26 dans le forum Administration système
    Réponses: 13
    Dernier message: 03/10/2011, 12h10
  4. Réponses: 0
    Dernier message: 21/07/2010, 15h36

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