|
Publicité | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() |
Suite à ce thread, j'ai décidé de passer à l'utf-8: http://www.developpez.net/forums/viewtopic.php?t=461471
Mais j'ai déjà un problème! Dans ma base de données, il y a des caractères "bizarres" pour les "é" (par exemple) il y a: é Pourtant: interclassement: utf8_unicode_ci Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) nterclassement pour la connection MySQL UTF-8 Unicode-ci J'utilise phpMyAdmin, et l'encodage des caractères (firefox) est bien utf-8. Merci pour votre aide! EDIT: lorsque dans ma page php je fais un select, cela s'affiche correctement EDIT2: phpmyadmin 2.6.0pl3 |
|
|
|
|
|
#2 |
|
Membre habitué
![]() |
Salut,
Attention à la configuration de l'affichage de phpMyAdmin. Peut etre bien que tout est en UTF-8 mais que ton phpmyadmin l'affiche en ISO....
__________________
On ne peut empêcher les vagues, mais on peut apprendre à les surfer... http://blog.plopix.net http://www.ez-france.org |
|
|
|
|
|
#3 |
|
Membre du Club
![]() |
et donc je fais comment pour insérer manuellement des données (depuis phpMyAdmin). Car en effet, si j'insère "é", le select de ma page php affiche un losange noir avec un "?" à l'intérieur.
Est-ce un fichier de config à modifier? Merci pour cette aide au passage à utf-8 |
|
|
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Date d'inscription: septembre 2004
Messages: 5 463
|
Et ton flux html ?
|
|
|
|
|
|
#5 | |
|
Membre du Club
![]() |
Citation:
Si c'est de l'option affichage->encodage des caractères (sous firefox) c'est bien en utf-8. Et sinon j'ai bien mis le <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
|
|
|
|
|
|
#6 |
|
Membre du Club
![]() |
Les caractères que j'appelais "bizarres" sont en fait les correspondants iso-8859-1 de l'utf-8.
phpMyAdmin ne veut pas me les afficher en utf-8! (et donc je ne peux pas insérer non plus via phpmyadmin)! |
|
|
|
|
|
#7 |
|
Membre du Club
![]() |
mmh, je trouve pas
|
|
|
|
|
|
#8 |
|
Membre habitué
![]() Date d'inscription: août 2005
Localisation: Berlin
Messages: 142
|
regarde la source html de phpMyAdmin via Firefox et regarde si ya la bonne <meta> utf-8
sinon essaye un .htaccess avec AddDefaultCharset UTF-8 dans le repertoire de phpMyAdmin pour voir se que sa donne |
|
|
|
|
|
#9 |
|
Membre du Club
![]() |
1) C'est bien en utf-8
2) rien ne change Merci pour ces propositions, mais je ne comprend pas du tout pourquoi phpmyadmin affiche cela. Est-ce que mes données ne sont pas VRIAMENT en utf-8? |
|
|
|
|
|
#10 |
|
Membre habitué
![]() Date d'inscription: août 2005
Localisation: Berlin
Messages: 142
|
As tu bien reseigné l'interclassement UTF-8 de ta base de donnée, de tes tables et de leur champs?
|
|
|
|
|
|
#11 |
|
Membre du Club
![]() |
question: faut-il changer qqch quand on passe en utf-8 dans php.ini ou dans le fichier de config de phpmyadmin?
|
|
|
|
|
|
#12 |
|
Membre du Club
![]() |
Désolé de remonter le sujet, mais je ne trouve pas de réponse.
Config: - php5.04 - mysql 4.1.12 - phpMyAdmin 2.6.0-pl3 phpmyadmin: - Language: Fr-UTF-8 - Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) - Interclassement pour la connection MySQL: UTF8_general_ci - Interclassement de la BD: utf8_general_ci Lorsque je me connecte je fais bien une query genre "set names utf-8", et en me connectant hors phpmyadmin j'ai pu bien voir que les caractères sont bien en utf8. (en lignes de commandes il s'affiche aussi é pour un "é") Le problème: sous phpMyAdmin les caractères sont affichés comme si c'était de l'iso => les é deviennent é (donc on ne peut pas insérer non plus: dans ce cas il s'insère un "é" => dans ma page php j'ai un losange noir avec un "?") Détails: mb_string n'est pas installé, aucun fichier de config modifié, le charset est utf-8 dans les <meta> myadmin. Pas de reboot. Si qqn a la moindre idée, cela m'aiderait bcp!!! Merci! |
|
|
|
|
|
#13 |
|
Membre Confirmé
![]() Date d'inscription: juillet 2004
Localisation: Mieszkam w Grenoblu
Messages: 267
|
J'ai exactement le même problème que toi.
As-tu trouvé une solution?
__________________
Хајде Јано коло да играмо |
|
|
|
|
|
#14 |
|
Membre extrêmement actif(ve)
![]() Date d'inscription: juin 2006
Messages: 1 662
|
Je traine cette galère depuis un bon moment et de temps en temps je cherche la solution sur le net.
Cela semble venir de nul part et pourtant nous sommes nombreux dans ce cas. Il est clair pour moi que je ne dois pas toucher aux paramètres par défaut de Firefox, puisque l'utilisateur visitant un site ne doit modifier ses paramètres. Il y a sur firefox dans "Affichage" "Encodage des caractères" "Détection automatique" (Désactivé). Celui là j'aimerai bien l'activer pour voir, mais je ne trouve pas comment. J'utilise Golive CS2 pour créer mes pages, elles doivent être en encodage utf-8 ? Ma base mysql sous phpmyadmin est en utf-8 idem pour les tables et les champs. Je ne vois rien d'autre |
|
|
|
|
|
#15 |
|
Membre Confirmé
![]() Date d'inscription: juillet 2004
Localisation: Mieszkam w Grenoblu
Messages: 267
|
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 :
mysql_query("SET SESSION CHARACTER_SET_RESULTS =latin1;",$link); mysql_query("SET SESSION CHARACTER_SET_CLIENT =latin1;",$link); et avant return $link; Dans la fonction PMA_DBI_connect Au même endroit, dans le fichier mysqli.dbi.lib.php : Code :
mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =latin1;"); mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =latin1;"); Voici le code complet des deux pages maintenant pour la fonction à modifier : Code :
function PMA_DBI_connect($user, $password, $is_controluser = FALSE) { global $cfg, $php_errormsg; $server_port = (empty($cfg['Server']['port'])) ? '' : ':' . $cfg['Server']['port']; if (strtolower($cfg['Server']['connect_type']) == 'tcp') { $cfg['Server']['socket'] = ''; } $server_socket = (empty($cfg['Server']['socket'])) ? '' : ':' . $cfg['Server']['socket']; if (PMA_PHP_INT_VERSION >= 40300 && PMA_MYSQL_CLIENT_API >= 32349) { $client_flags = $cfg['Server']['compress'] && defined('MYSQL_CLIENT_COMPRESS') ? MYSQL_CLIENT_COMPRESS : 0; // always use CLIENT_LOCAL_FILES as defined in mysql_com.h // for the case where the client library was not compiled // with --enable-local-infile $client_flags |= 128; } if (empty($client_flags)) { $connect_func = 'mysql_' . ($cfg['PersistentConnections'] ? 'p' : '') . 'connect'; $link = @$connect_func($cfg['Server']['host'] . $server_port . $server_socket, $user, $password); } else { if ($cfg['PersistentConnections']) { $link = @mysql_pconnect($cfg['Server']['host'] . $server_port . $server_socket, $user, $password, $client_flags); } else { $link = @mysql_connect($cfg['Server']['host'] . $server_port . $server_socket, $user, $password, FALSE, $client_flags); } } if (empty($link)) { PMA_auth_fails(); } // end if PMA_DBI_postConnect($link, $is_controluser); mysql_query("SET SESSION CHARACTER_SET_RESULTS =latin1;",$link); mysql_query("SET SESSION CHARACTER_SET_CLIENT =latin1;",$link); return $link; } Code :
function PMA_DBI_connect($user, $password, $is_controluser = FALSE) { global $cfg, $php_errormsg; $server_port = (empty($cfg['Server']['port'])) ? FALSE : (int) $cfg['Server']['port']; if (strtolower($cfg['Server']['connect_type']) == 'tcp') { $cfg['Server']['socket'] = ''; } // NULL enables connection to the default socket $server_socket = (empty($cfg['Server']['socket'])) ? null : $cfg['Server']['socket']; $link = mysqli_init(); mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, TRUE); $client_flags = $cfg['Server']['compress'] && defined('MYSQLI_CLIENT_COMPRESS') ? MYSQLI_CLIENT_COMPRESS : 0; $return_value = @mysqli_real_connect($link, $cfg['Server']['host'], $user, $password, FALSE, $server_port, $server_socket, $client_flags); if ($return_value == FALSE) { PMA_auth_fails(); } // end if PMA_DBI_postConnect($link, $is_controluser); mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =latin1;"); mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =latin1;"); return $link; }
__________________
Хајде Јано коло да играмо |
|
|
|
|
|
#16 |
|
Invité de passage
![]() Date d'inscription: octobre 2007
Messages: 3
|
Etant donné qu'on trouve cette solution en cherchant un peu, je préfère préciser ici que ce n'est pas du tout ce qu'il faut faire.
Pour se connecter à une base en utf-8 sur mysql en utilisant PHP, il faut préciser après le mysql_connect : Code :
mysql_query("SET NAMES 'UTF8'") Code :
'encoding' => 'utf8' |
|
|
|
|
|
#17 | |
|
Invité régulier
![]() Date d'inscription: décembre 2007
Messages: 18
|
Citation:
Même mon SET NAMES est redondant par rapport à la config de MySql. Le problème reste le même : - tout en utf8 dans les pages accès, enregistrement, modification via php - tout en utf8 dans Mysql Aucun pb Dès qu'on affiche dans PMA, ça ressemble à de l'iso affiché en utf8 la solution énoncée dans le post précédent le tien ne me paraît pas "super" parce que ça demande de patcher, mais elle a le mérite de résoudre le souci. Même si je pense fortement que le souci est en amont avec un truc oublié dans un coin :\ Nico Dernière modification par nicolas.poulain ; 26/09/2008 à 09h47. |
|
|
|
|
|
|
#18 |
|
Invité régulier
![]() Date d'inscription: décembre 2007
Messages: 18
|
Bonjour
Pour moi résolu avec : mysql_query("SET NAMES 'utf8'") ; Je l'avais mis après le return de ma fonction de connexion à la base Les plus gros problèmes sont entre la chaise et le clavier... m'en bat la culpe ici publiquement :\ Du coup, ça fonctionne bien quelque soit le mode de connexion à la base : PMA, mon appli, en console directos via mysql Glané dans les recherches : http://wiki.cihar.com/pma/garbled_data et http://fr.php.net/manual/fr/function...et-charset.php Nico |
|
|
|
|
|
#19 | |
|
Nouveau membre du Club
![]() Date d'inscription: septembre 2008
Messages: 79
|
Citation:
j'ai le meme probleme mais avec les carracteres arabes. quand jesaisiun nom arabe il m'affiche l'erreur suivante"data too long for nom" nom c'est le nom du chap SVP aidez moi |
|
|
|
|
|
|
#20 | |
|
Membre Confirmé
![]() Date d'inscription: juillet 2004
Localisation: Mieszkam w Grenoblu
Messages: 267
|
Citation:
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.
__________________
Хајде Јано коло да играмо |
|
|
|
|
|
|
![]() |
||
UTF-8 et phpMyAdmin : problèmes d'encodage
|
||
| Outils de la discussion | |
|
|