• # Pbm de locale ?

    Posté par . En réponse au message Conversion de caractères. Évalué à 3.

    C'est un problème de locale et de charset. PHP doit prendre par défaut le charset ISO-8859-15, et ne comprends donc pas tous les caractères qui sortent de cette définition. En l'occurence ici les caractères suédois. Mais apparemment le problème est bien plus poussé. Quoique le problème semble plus poussé. PHP doit vouloir fonctionner en unicode, alors que phpmyadmin bloque sur du ISO-8859-15, résultat : ça bloque.

    Si on utilises phpmyadmin, on ne peut pas l'utiliser dans un charset unicode (bien dommage d'ailleurs, ça règlerait le problème de façon simple et élégante). Donc il faut se taper la transformation en entités de tout ce qui n'est pas caractère ASCII ! Erf, pas glop du tout...

    Le mieux c'est de ne pas entrer de données dans la base en utilisant phpmyadmin, mais uniquement via le programme final en PHP, que l'on peut facilement gérer lui au moins. C'est-à-dire qu'on peut lui définir un charset de fonctionnement bien pratique : l'unicode.

    Moi j'utilise ça dans mon code PHP (à mettre au début du script) :

    <?php
    setlocale( LC_ALL, 'fr_FR.UTF-8' );
    mb_internal_encoding( 'UTF-8' );
    ?>

    Et bien entendu, il faut aussi indiquer au user-agent que ce qui va être affiché est de l'unicode, donc ne pas oublier de mettre ça dans le header de la page HTML : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    Ou si c'est du XHTML Strict : <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />


    Avec tout ça, normalement le site devrait fonctionner correctement, et plus de problèmes de gestion des charsets (sauf dans phpmyadmin qui - quel idiot quand même - ne permet pas de fonctionner en unicode). Mais ça ne risque peut-être pas te d'aider grandement dans ton cas, car tu risques de devoir corriger tout ce qui est dans ta base de donnée... Bon courage...