Bonjour,
voila mon problème:
lors d'extraction d'une base de données contenant des caractères accentués, j'obtiens systématiquement des ? à la place.
par exemple:
Flemming Søndergård
devient
Flemming S�nderg�rd
(ça marche aussi avec des bêtes é ou à, mais j'ai pris le premier exemple qui me tombait sous la main!)
Pour infos, la machine de dev est sous linux, apache 2, php 4.3 et mysql3.23, et le problème n'apparait pas si j'exécute la même requéte sur une simple install d'Easyphp sour W$. Le problème n'apparait pas non plus dans phpmyadmin.
Quelqu'un aurait-il déjà rencontré ce problème, j'ai eu beau chercher sur le site php.net mais je n'ai pas trouvé de réponse.
Merci.
# Re: Conversion de caracteres
Posté par KingPenguin . Évalué à 2.
Plus éléguant : stockez vos données dans un charset multibytes, comme UTF8 ou UCS2 dans MySQL (ajoutez CHARSET UCS2 a votre requete de creation de table pour specifier ce charset), et prenez soin de convertir vos caractères en UCS2 avant de les enregistrer dans la base, par exemple avec l'extension iconv de PHP
# Pbm de locale ?
Posté par Julien Portalier . Évalué à 3.
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...
[^] # Re: Pbm de locale ?
Posté par monty (site web personnel) . Évalué à 1.
Je vais tester ces solutions, merci à vous...
[^] # Re: Pbm de locale ?
Posté par Julien Portalier . Évalué à 3.
Mais le plus simple reste l'utilisation de l'unicode du début à la fin, ça évite les pbms ^^
[^] # Re: Pbm de locale ?
Posté par monty (site web personnel) . Évalué à 1.
Merci a tous encore une fois.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.