mysql : utf-8 ou iso-8859-15 ?

mysql : utf-8 ou iso-8859-15 ? - SQL/NoSQL - Programmation

Marsh Posté le 06-04-2007 à 14:45:27    

Bonjour !
 
Je vais bientôt faire une base mysql hébergée chez ovh où est appliqué par défaut la norme "utf8 using latin1 collate latin1_swedish_ci
 
Sur mon site web, on peut faire des requêtes sur le contenu de la base ; j'ai mis comme norme dans <head>
 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 
Seul problème: alors que, lors de tests, les mots avec accents sont correctement reconnus, les mots qui comportent une "ç" ne le sont pas et renvoyent comme résultat "null" alors qu'il y a des entrées dans la base avec "ç".
 
Pouvez-vous me dire dans quel norme je dois concevoir la base de données pour qu'une requête contenant des ç, é, â etc. s'effectue correctement ?
 
 :hello:

Reply

Marsh Posté le 06-04-2007 à 14:45:27   

Reply

Marsh Posté le 06-04-2007 à 14:57:30    

je dirais surtout que c'est le collate suédois qui va pas. essaie d'utiliser une collation un peu plus francophone pour voir.
 
(parceque contrairement à ce que j'ai longtemps cru, le ç est parfaitement supporté en utf-8


Message édité par MagicBuzz le 06-04-2007 à 14:58:07
Reply

Marsh Posté le 06-04-2007 à 15:04:01    

Je vais voir ce que j'ai comme choix...

Reply

Marsh Posté le 06-04-2007 à 15:11:47    

Voilà entre autres ce que je pourrais choisir pour la base mysql:
 
ascii_bin
ascii_general_ci
 
binary
 
cp1250 / cp1251 / cp1256 / cp1257 (chacun avec en option bin ou general_ci)
 
latin1_bin
latin1_general_ci
latin1_general_cs
 
latin1_german_cs
latin1_german1_cs
latin1_german2_cs
latin1_spanish_ci
 
Lequel serait le mieux ?
 
 :jap:

Reply

Marsh Posté le 06-04-2007 à 15:12:06    

Attention, si tu vais des requêtes en utilisant PHPMyAdmin.
Ma base était en UTF-8, mes requêtes, via PHPMyAdmin se retrouvait en ISO... ou quelque chose comme ça (bref, attention)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 06-04-2007 à 15:16:33    

effectivement, ça peut être une source d'erreur :)
 
sinon, latin1_general semble bien.
 
cs et ci indique si tu veux différencier majuscules et minuscules lors des recherches et tris (ci = insensible à la casse / cs : sensible à la casse)

Reply

Marsh Posté le 06-04-2007 à 15:16:38    

OK, merci.  
 
Et pour la question en général (lien entre html en utf et mysql )?

Reply

Marsh Posté le 06-04-2007 à 15:17:26    

Brulé... merci magicBuzz ! ce sera donc latin1_general_ci...


Message édité par 1cat le 06-04-2007 à 15:17:59
Reply

Marsh Posté le 06-04-2007 à 15:18:47    

clairement, je trouve utf-8 la meilleure solution possible, puisqu'elle permet de faire une abstraction totale des caractères stockés dans ta base. ainsi, je jour où t'as des japonais et des russes qui viennent saisir des infos dans ton site en utilisant leur propre alphabet, tu n'auras rien à faire. alors qu'avec iso-8859-15 tu ne pourras pas stocker leurs jeux de caractères sans t'exposer à des problèmes.

Reply

Marsh Posté le 06-04-2007 à 15:45:39    

donc plutôt  
 
utf_general_ci pour la base  
utf-8 pour la page html... ?

Reply

Marsh Posté le 06-04-2007 à 15:45:39   

Reply

Marsh Posté le 06-04-2007 à 15:47:13    

à priori, c'est comme ça que je tenterais, oui

Reply

Marsh Posté le 06-04-2007 à 16:06:11    

:jap:

Reply

Marsh Posté le 24-04-2007 à 14:23:56    

MagicBuzz a écrit :

clairement, je trouve utf-8 la meilleure solution possible, puisqu'elle permet de faire une abstraction totale des caractères stockés dans ta base. ainsi, je jour où t'as des japonais et des russes qui viennent saisir des infos dans ton site en utilisant leur propre alphabet, tu n'auras rien à faire. alors qu'avec iso-8859-15 tu ne pourras pas stocker leurs jeux de caractères sans t'exposer à des problèmes.


2 réflexions rapides :
- les entités HTML s'appliquent aux japonais ?
- que faire si l'hébergeur te propose (te force) latin 1 8859-1 (et pas 15) ?
 
je remonte ce topic parce que j'y suis confronté ...

Reply

Marsh Posté le 24-04-2007 à 14:35:17    

qu'entends-tu par "entités HTML" ?
 
ceci est parfaitement valide (sans utiliser la syntaxe &#xxxx; donc) :

Code :
  1. <h1> </h1>
  2. <p></p>


 
Ensuite si l'hébergeur t'impose un latin-1 tout ce qu'il y a de plus standard, deux solutions :
- Tu pars du principe que l'UTF8 est compatible ASCII, et donc à forciori compatible avec LATIN-1 qui est une simple surcouche d'ASCII. A ce moment, t'envoies ton flux UTF8 dans la base sans formattage ni rien, et tu le relis comme si c'était de l'UTF8 (méthode binaire : la base ne pige rien de ce que tu lui racontes, mais toi tu te comprends). Seul défaut : toutes les fonctionnalités telles que la recherche indexée fulltext, like ou soundex font donner des résultats incohérents.
- Tu te palluches un encode de tous tes caractères pour changer de charset. Défaut : l'UTF8 est bien plus vaste que LATIN-1, et le japonnais par exemple ne passera pas.
- Tu t'amuses à tout encoder en HTML (avec des &#xxxx; et tu multiplies par 10 la taille de tes données, et perds toute possibilité d'indexation et recherches -donc autant utiliser la première solution-)


Message édité par MagicBuzz le 24-04-2007 à 14:35:43
Reply

Marsh Posté le 24-04-2007 à 14:37:05    

PS : A noter que je sais pas comment fait Joce, mais...
Ce forum est encodé en ISO-8859-1 (donc LATIN-1) et pourtant il accepte le japonnais, puisque je viens d'en écrire dans mon précédent poste.
 
Faudrait lui demander comment il fait ça :D

Reply

Marsh Posté le 02-05-2007 à 17:06:30    

il se relit et il comprend :D
merci pour la réponse

Reply

Sujets relatifs:

Leave a Replay

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