MySQL et accents

MySQL et accents - SQL/NoSQL - Programmation

Marsh Posté le 30-08-2005 à 23:44:05    

Bjr,
Je saisie ds des champs d'une table des données texte.
Les accents ne passent pas - remplacés par des ? - lorsque je mets mes pages en ligne - serveur Freee - ,alors que l'affichage est correct en local - easyphp 1.6.
 
Mes pages contiennent en en -tête:
 echo"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";
 
Comment encoder/decoder les caractères accentués?
J'aimerai intervenir à la lecture des données ds la table, donc après la saisie.
 
Merci pour vos pistes !
 

Reply

Marsh Posté le 30-08-2005 à 23:44:05   

Reply

Marsh Posté le 31-08-2005 à 00:21:35    

quand tu consulte ta base avec phpMyAdmin par exemple, tu as bien les accents ou pas ?

Reply

Marsh Posté le 31-08-2005 à 00:41:18    

Oui oui.
En fait pour avoir un affichage en ligne correct, il faudrait que je remplace, dans ma base, ts les caractères accentués par les &eacu... équivalents.
Mes données texte ds ma base proviennent de copier/collés effectués à partir de fichier .txt que l'on m'a fourni.
 

Reply

Marsh Posté le 31-08-2005 à 09:27:20    

Sinon, à la sortie, tu peux utiliser la fonctions php htmlentities() qui va te traduire tes accents ds la base en code html à l'affichage.

Reply

Marsh Posté le 31-08-2005 à 12:06:37    

Oui mais ça ne fonctionne pas, je ne pige pas trop pourquoi, encodage initial du texte?
 
Version initiale:
echo $txt; // les caractères accentués sont remplacés par des "?".
 
Version corrigée:
$txt = htmlentities($txt);
echo $txt; // meme rmque que ci - dessus !
 
Auriez - vous d'autres pistes? Merci!

Reply

Marsh Posté le 31-08-2005 à 12:37:01    

Tu peux pas mettre ton texte dans une variable php et lui appliquer un str_replace ("é","&eacute",$texte) avant de le mettre dans ta bdd?
C'est comme ça que je m'en étais sorti...


Message édité par tux11kin202 le 31-08-2005 à 12:37:17
Reply

Marsh Posté le 31-08-2005 à 18:20:36    

Oui, et donc à faire pour chaque type d'accent .... ou autre type de caractère; par ex. "n°" ne passe pas non plus bien sûr ...
Y aurait - il un moyen d'intervenir après l'extraction des données de la table?
Y a t -il un en - tête différent de celui que j'indique ci -dessus à faire figurer?
 
 

Reply

Marsh Posté le 31-08-2005 à 18:47:20    

*** PROBLEME RESOLU ***  
... et merci pour vos réponses.
 
Lorsque j'importe mes tables depuis le serveur à l'aide de PhpMyAdmin, le jeu de caractères du fichier est "utf8" par défaut; j'ai donc validé "latin1" et maintenant c'est OK :-) OUF!

Reply

Marsh Posté le 04-12-2006 à 18:48:07    

J'ai aussi un problème de ce type avec un serveur mySQL 4.1 (aussi bien sous Linux que sous Windows)
 
1° Je crée une table très simple :
 
CREATE TABLE `keywords` (                          
            `Id_keywords` int(11) NOT NULL auto_increment,  
            `Words` varchar(40) NOT NULL default '',        
            PRIMARY KEY  (`Id_keywords`),                    
            UNIQUE KEY `Words` (`Words`)                    
          ) ENGINE=InnoDB DEFAULT CHARSET=latin1            
 
2° J'insère une donnée avec un accent
 
INSERT INTO keywords (Words) VALUES ('HÔMH');
 
3° Ce premier select est normal
SELECT Id_keywords FROM keywords WHERE Words = 'HÔMH'
 
4° Celui ci me retourne quelque chose alors qu'il ne devrait rien me retourner
SELECT Id_keywords FROM keywords WHERE Words = 'HOMH'
 
Je suppose que c'est un truc avec les collations ... mais j'avoue être un peu bloqué

Reply

Marsh Posté le 20-12-2006 à 14:57:46    

Utilise un collate cs pour "case sensitive" au niveau requête si tu ne veux pas changer la collation par défaut.

Reply

Marsh Posté le 20-12-2006 à 14:57:46   

Reply

Marsh Posté le 20-12-2006 à 15:03:09    

Thibs10 a écrit :

INSERT INTO keywords (Words) VALUES ('HÔMH');
 
3° Ce premier select est normal
SELECT Id_keywords FROM keywords WHERE Words = 'HÔMH'
 
4° Celui ci me retourne quelque chose alors qu'il ne devrait rien me retourner
SELECT Id_keywords FROM keywords WHERE Words = 'HOMH'
 
Je suppose que c'est un truc avec les collations ... mais j'avoue être un peu bloqué


Les règles de collation latin1 prennent en compte le français, donc ô = o... Faut une comparaison binaire par exemple pour bien différencier les deux

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed