MySQL et accents - SQL/NoSQL - Programmation
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 ?
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.
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.
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!
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 ("é","é",$texte) avant de le mettre dans ta bdd?
C'est comme ça que je m'en étais sorti...
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?
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!
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é
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.
Marsh Posté le 20-12-2006 à 15:03:09
Thibs10 a écrit : INSERT INTO keywords (Words) VALUES ('HÔMH'); |
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
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 !