mysql : utf-8 ou iso-8859-15 ? - SQL/NoSQL - Programmation
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
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 ?
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)
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 )?
Marsh Posté le 06-04-2007 à 15:17:26
Brulé... merci magicBuzz ! ce sera donc latin1_general_ci...
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.
Marsh Posté le 06-04-2007 à 15:45:39
donc plutôt
utf_general_ci pour la base
utf-8 pour la page html... ?
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é ...
Marsh Posté le 24-04-2007 à 14:35:17
qu'entends-tu par "entités HTML" ?
ceci est parfaitement valide (sans utiliser la syntaxe xxx; donc) :
Code :
|
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 xxx; 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-)
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
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 ?