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 :

default_charset dans php.ini


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut default_charset dans php.ini
    Bonjour,

    En attendant php6 (pour l'instant PHP travaille en interne en ISO-8859-1), je cherche a basculer tout ce que je peux en UTF8, car les problèmes d'encodages sont vraiment pénible.

    Dans php.ini, je suis tombé sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ; PHPs default character set is set to empty.
    ; http://php.net/default-charset
    ;default_charset = "iso-8859-1"
    Concernant cette directive on peut lire sur php.net/default-charset :

    PHP enverra toujours un jeux de caractères par défaut à l'en-tête HTTP Content-type: header. Pour désactiver l'envoi du jeu de caractères, définissez le tout simplement à une valeur vide.
    Pas très explicite : on ne nous dit pas quel est ce jeux de caractères par défaut (même si je suppose que c'est de l' iso-8859-1 car la ligne est commentée tel quel dans le php.ini) , ni comment le connaitre..

    Je suis tenté de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    default_charset = "UTF-8"
    Qu'en pensez-vous ?

  2. #2
    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
    Il faut comprendre que PHP envoit un header avec le jeu de caractères (celui indiqué).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    à mes connaissance c'est le serveur apache qui envoi un header content_type
    apache travail en ISO-8859-1, c'est donc dans cette norme qu'il risque d'envoyer ses entêtes.
    L'instruction à modifier dans le httpd.conf ou dans un .htaccess :
    AddDefaultCharset UTF-8
    Sinon via php :
    header('Content-type: text/html; charset=UTF-8');

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    default_charset (php.ini) comme AddDefaultCharset (Apache sur les types text/plain ou text/html) n'ont uniquement pour but de définir un jeu de caractères par défaut au niveau de l'entête HTTP. Ceux-ci ne devrait donc jamais entrer en action si l'on en a spécifié un correct auparavant (header - c'est quand même mieux de spécifier explicitement celui qu'on utilise réellement au niveau de l'application/script que de chercher à le faire valoir par l'intermédiaire de paramètres par défaut).

    (Comment encoder votre site intégralement en UTF-8)

  5. #5
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    Merci pour vos commentaire.

    J'avais effectué la modif que vous mentionnez dans le httpd.conf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddDefaultCharset UTF-8
    Mais retrouvant un paramètre équivalent dans php.ini, je me demande lequel prend le pas sur l'autre.

    Je suppose que spécifier un default_charset dans php.ini revient a mettre un header(..) sur chaque page php (corrigez moi si je me trompe).


    (header - c'est quand même mieux de spécifier explicitement celui qu'on utilise réellement au niveau de l'application/script que de chercher à le faire valoir par l'intermédiaire de paramètres par défaut)
    Je suis a moitié d'accord.
    Oui si l'appli est conçue pour être largement déployée, et que l'on souhaite qu'elle fonctionne dans de nombreux contexte :
    • quand on n'a pas accès aux ".ini" des serveurs (hébergements mutualisés)
    • Si il y a d'autres applis installée sur le même serveur web (avec le risque que l'encodage de l'un ne convienne pas à l'autre)


    Maintenant dans l'absolu (et en pratique sur un serveur dédié à l'application) je ne trouve pas très efficace d'indiquer à php sur chaque page quels encodage utiliser quand c'est le même partout.

    Merci pour le lien du tuto (qui dailleurs ne parle pas du default_charset du php.ini)

    Le tuto me semble incomplet dans le même contexte (ou l'on dédie un serveur à une appli) dans la partie "V-B. A la connexion". Pour éviter un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset( 'utf8' );
    en php ou un : en SQL a chaque appel à la base de donnée on peut modifier le my.ini si l'on souhaite un paramétrage en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [wampmysqld] ou [mysqld] 
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    Remarque au passage : dans mon contexte wamp, get_charset me retourne pour 'collation' la valeur 'utf8_general_ci' et pas 'utf8_unicode_ci' comme précisé dans my.ini

Discussions similaires

  1. [Configuration] Paramétrage des erreurs dans php.ini
    Par Velkan.nexus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 21/10/2007, 12h42
  2. [Configuration] extension_dir dans php.ini
    Par pitxu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/10/2007, 23h15
  3. [EasyPHP] problème avec upload_max_filesize dans php.ini
    Par bankette dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 19
    Dernier message: 08/06/2007, 14h31
  4. [EasyPHP] Taille de l'upload dans php.ini
    Par camzo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 28/12/2006, 17h09
  5. [FTP] Serveur SMTP dans php.ini configuration
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2006, 18h58

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