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

EDI, CMS, Outils, Scripts et API PHP Discussion :

UTF-8 et phpMyAdmin : problèmes d'encodage [phpMyAdmin]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #21
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par SuperCed Voir le message
    Il s'agit peut être de changer latin 1 par le nom de l'encodage utilisé pour afficher des caractères arabes.

    Il faut aussi faire attention, je pense que les caractères arabes peuvent être sur 4 octets. Il faut donc bien faire des tests multioctets quand on teste la longueur des châines.
    j'ai mis set names 'utf-8' mais toujours le même problème.

    comment faire ce que tu as dis 'Il faut donc bien faire des tests multioctets quand on teste la longueur des chaînes'

  2. #22
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Points : 77
    Points
    77
    Par défaut
    jai essayé ds un autre pc la ou installé mysql3 ça marche mais sur mon pc ou est installé mysql5 ça marche pas

  3. #23
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Amel_B Voir le message
    j'ai mis set names 'utf-8' mais tjrs le meme prob.

    comment faire ce ke tu as dis 'Il faut donc bien faire des tests multioctets quand on teste la longueur des châines'
    Un mot arabe que tu vois sur 4 caractères peut en fait être codé sur 4*4 octets.
    donc 16 octets.

    Dans MySQL, le nom sur 4 caractères ne rentrera donc pas si tu as un champ CHAR(4) par exemple.

    Il te faudra un CHAR(16).

    En ce qui concerne l'encvodage, ce n'est justement pas l'encodage UTF-8 qu'il faut mettre, mais l'encodage utilisé par défaut pour tes lettres en arabe.

    J'ai vu que ça existait, par exemple, il y a l'arabe ISO 8859-6, l'arabe DOS, l'arabe MacOS et l'arabe Windows.
    A toi de trouver la correspondance dans la doc MySQL.
    Peut-être ça cp1256

  4. #24
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par SuperCed Voir le message
    Un mot arabe que tu vois sur 4 caractères peut en fait être codé sur 4*4 octets.
    donc 16 octets.

    Dans MySQL, le nom sur 4 caractères ne rentrera donc pas si tu as un champ CHAR(4) par exemple.

    Il te faudra un CHAR(16).

    En ce qui concerne l'encvodage, ce n'est justement pas l'encodage UTF-8 qu'il faut mettre, mais l'encodage utilisé par défaut pour tes lettres en arabe.

    J'ai vu que ça existait, par exemple, il y a l'arabe ISO 8859-6, l'arabe DOS, l'arabe MacOS et l'arabe Windows.
    A toi de trouver la correspondance dans la doc MySQL.
    Peut-être ça cp1256
    la longueur je l'ai mis 255 pour éviter ça
    pour cp1256 je le met dans php myadmin, et dans le fichier php alors qu'est ce que j'écris au lieu de charset=utf-8 ?

  5. #25
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    dans le fichier php essayé avec windows-1256 au lieu de utf-8 et dans php myadmin cp1256_general_ci

  6. #26
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Points : 77
    Points
    77
    Par défaut
    je les ai changé et le même message d'erreur d'hier seulement maintenant

    اسبانياIllegal mix of collations (cp1256_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='j'ai fait echo


    maintenant quand j'ai fait echo $nom_wil il me l'a affiché en arabe "اسبانيا"
    avant le changement il affiche des carrés

  7. #27
    Membre actif Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Points : 232
    Points
    232
    Par défaut
    Citation Envoyé par SuperCed Voir le message
    Ok, c'est bon, j'ai la solution.

    J'ai ajouté 2 lignes dans les fichiers dbi contenus dans le répertoire librairies/dbi/

    Voici les lignes pour chaque fichier :
    dans mysql.dbi.lib.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_query("SET SESSION CHARACTER_SET_RESULTS =latin1;",$link);
        mysql_query("SET SESSION CHARACTER_SET_CLIENT =latin1;",$link);
    [...] (écourté pour pas poluer) [...]
    Merci beaucoup, j'ai ajouté ces ligne et YOUPII ça MARCHE !!

    Merci pour cette astuce depuis le temps que je me disait que phpMyAdmin fesait ***** a pas vouloir faire du vrai utf-8 !

    Encore merci !

  8. #28
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Pour info, depuis, j'ai trouvé la cause de ce problème avec phpMyAdmin.

    Il s'agit d'un double encodage en UTF-8. Je m'explique :

    MySQL stocke en utf-8
    On lui envoie des données en UTF-8 depuis PHP

    Il y a donc un double encodage.

  9. #29
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Joli déterrage !
    3 ans & 3 mois après... Pour donner une explication déjà répétée maintes fois autour du Web depuis.

    Magnifique.

  10. #30
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut l'ajout des deux ligne n'a pas réussi
    Bonjour;

    J'ai ajouté les deux lignes comme indiqué, mais le problème n'est pas encore résolu.
    Quand je redémarre mysql, il m'affiche un message:

    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'
    ERROR 1300 (HY000) at line 1: Invalid utf8 character string: 'M\xE9d\xE9a'

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [DOM] Problème d'encodage UTF-8
    Par Valter dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/05/2008, 16h32
  2. problème d'encodage ISO /UTF
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 9
    Dernier message: 09/04/2008, 19h48
  3. Problème d'encodage UTF-8
    Par Shugo78 dans le forum Ubuntu
    Réponses: 0
    Dernier message: 23/11/2007, 20h40
  4. [MySQL] Problème d'encodage UTF-8
    Par cloridriks dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/10/2007, 12h19
  5. Problème d'encodage en UTF-8
    Par navis84 dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2006, 12h19

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