Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité
    Invité(e)

    Par défaut Encodage UTF-8 avec mysql, apache..

    Bonjour,

    je suis entrain d'installer un server Debian squeeze avec apache et mysql.
    Lors de l'installation j'ai bien pensé à faire tous les changements pour l'UTF8 (voir ce tuto)

    Donc :
    - mes fichiers ont la balise méta : <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    - mes fichiers sont bien encodés avec UTF-8 sans bom
    - AddDefaultCharset UTF-8 pour apache dans /etc/apache2/conf.d/charset
    - mes tables mysql sont en utf8_general_ci
    - Interclassement au niveau de la base de données entière est en utf8_general_ci
    - Pour php j'ai rajouté cela dans le php.ini :
    Code :
    1
    2
    3
    4
    5
    6
    # Pour activer l'utf-8 par defaut
    mbstring.LANGUAGE=UTF-8
    mbstring.internal_encoding=UTF-8
    mbstring.http_input=UTF-8
    mbstring.http_output=UTF-8
    mbstring.detect_order=auto
    - Et pour mysql, j'ai rajouté :
    # Activer l'utf-8 par default sur le serveur (dans [mysqld])
    default-character-set = utf8
    default-collation = utf8_general_ci
    # dans [client]
    default-character-set = utf8
    Donc j'ai tout fait voir plus... mais j'ai toujours un problème , j'explique :
    Le problème se situe au niveau de mysql. Dès que je récupère des valeurs dans mes tables (qui sont bien en utf8) et que je les affiches j'ai le droit à des caractères dans ce style " � ".
    A partir de là, je comprends bien que mes valeurs récupérer sont en iso.
    Alors du coup je décide de mettre : SET NAMES "utf8"; avant ma requête et la plus de souci (ça confirme qu'il ne me renvoyais pas d'UTF8).

    1- Est ce que l'on est obligé de mettre SET NAMES "utf8" ?
    car il me semblait qu'avec tous les réglages que j'ai fait je devrais l'avoir par defaut.
    2 - Est-ce que c'est le contenu de mes champs qui sont en iso ? je comprends pas...

    Merci pour votre aide.

  2. #2
    Expert Confirmé Avatar de ericd69
    Homme Profil pro Eric Dureuil
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Dureuil
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 1 849
    Points : 3 179
    Points
    3 179

    Par défaut

    salut,

    tiens moi aussi j'expérimente la grande joie de faire ça...

    oui c'est du à la configuration du drivers mysql (mysql, pdo, mysqli) qui selon la version de php reste sur latin1 par défaut, ce qui oblige à faire ça...(ou son équivalent dans pdo)

    php et mysql sont anciens dans cette version de debian, ils datent d' il y a plusieurs années...

    à savoir que dans cette version de mysql 5.1 tu utilises de l'utf8 limité à 3 octets maximum, l'utfmb4 n'est disponible qu'à partir de la version 5.5

    passe à debian 7.0 si tu veux bénéficier de l'utf8 réglable et utilisable par défaut sans "set names"
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Invité
    Invité(e)

    Par défaut

    Ok, merci bien pour cette explication.
    Du coup je vais utiliser SET NAMES "utf8" en attendant d'avoir une version stable de debian 7 (j'ai vu que ça va pas tarder).

    Je trouve cela quand même étonnant que l'on ne peut pas modifier ce paramètre ? et pourquoi c'est le latin par défaut ?

    Enfin bon si tu me dis que c'est normal ça me rassure car là je ne voyais pas de solution.

  4. #4
    Expert Confirmé Avatar de ericd69
    Homme Profil pro Eric Dureuil
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 849
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Dureuil
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 1 849
    Points : 3 179
    Points
    3 179

    Par défaut

    c'est à cause du choix de l'existence des latinx: un encodade sur 1 à 2 octets maxi au lieu de 1 à 6 pour encoder l'unicode (qui utilise 4 octets de base ou 2 dans sa version limitée) et en plus avant les sites n'étaient quasiment jamais multilingue ou n'en mixait pas dans une même page. et pour finir ça fait que 4 ou 5 ans que tous les navigateur prennent en charge l'utf8 de base sans extension...

    donc dans les début du web et jusqu'à ce que l'adsl se démocratise ça avait son intérêt... et l'évolution en info ça prend du temps... tu as bien des gens qui utilisent des technologie qui ont plus de 5 ans (par exemple, y a bien des gars qui installe encore des debian lenny parce que tu trouves facilement les tutoriels et que certains hébergeurs la propose encore...)

    mais c'est bien les réglages que tu as fait car tu n'es pas forcé de générer normalement d'entête pour le charset vu que le serveur apache le fait
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Invité
    Invité(e)

    Par défaut

    Ok merci bien pour toute ses précisions.
    Bonne continuation.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •