IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Jeux de caractères et interclassement


Sujet :

Administration MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Points : 6
    Points
    6
    Par défaut Jeux de caractères et interclassement
    Bonjour,
    Je me permets de vous solliciter car après avoir lu beaucoup de choses sur le sujet je suis un peu perdu.

    A tort, je ne m'étais jamais vraiment penché sur le sujet mais suite à l'intégration de ckeditor je me suis rendu compte qu'à présent dans ma base de données, les caractères spéciaux étaient remplacés par leur équivalent HTML. Donc ma première question "faut-il laisser les accents dans une base de données" (je prends le cas des accents pour que ce soit plus clair) ?


    En regardant ma base j'ai réalisé que je n'utilisais pas le même interclassement pour la base et pour mes tables, est-ce que celà peut-être problématique ?

    Interclassement pour la connexion MySQL : utf8_general_ci
    Interclassement pour ma base et pour mes tables : latin1_general_ci


    Dans mes pages je déclare le charset de la façon suivante : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Sur ce que j'ai pu lire le format ISO-8859 semble suffisant si l'on souhaite rester dans un alphabet bien précis (latin dans mon cas). Dans ce cas est-il donc préférable que je change l'interclassement de la connexion MySQl ?

    merci d'avance pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    La gestion des jeux de caractères et des collations est particulièrement épouvantable dans MySQL et totalement inepte. j'ai écrit un article là dessus :
    http://blog.developpez.com/sqlpro/p1..._grand_folklor
    En sus, l'indexation textuelle de MySQL ne tient pas compte de la collation :
    http://blog.developpez.com/sqlpro/p9...text_search_no
    Pour couronner le tout : http://blog.developpez.com/sqlpro/p9...oudre_aux_yeux

    Bref, si vous avez réellement besoin de gérer correctement différentes collations, alors choisissez MS SQL Server ou au pire Oracle....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    utf8 (et 16 pour être complet) et les différentes versions de l'iso-8859-xx ne sont que des encodages de l’Unicode qui donne un code unique à chaque caractère de toutes les langues vivantes, la plupart des langues mortes et d'un certain nombre de familles de symboles (notes de musique, symboles phonétiques, symboles de pièces d'échec, etc...)

    l'unicode est un code sur 32 bits (toutes les plages de caractères possibles) ou 16 bits (pour la plupart des langues vivantes et des symboles)

    les encodages utf et iso sont une représentation multi-octet sous forme d'une séquence au lieu d'un valeur unique:
    • utf8 encode la valeur sur 4 octets de l'unicode sur 1 à 6 octets
    • les différents encodages iso eux encodent sur 1 à 2 octets mais sont limités à un jeu de caractères très limité et tu ne peux faire de conversion entre 2 encodages iso sans nombre de problèmes...


    historiquement le web et les sgbd ont favorisé les encodages iso car plus compacts et dans un contexte peu international et la limitation des tailles de stockage...

    la tendance est maintenant de les éliminer des réglages par défaut au profit d'utf8 car ces limitations disparaissent et pour les langues latines et anglophones, la compression par rapport à l’Unicode est identique mais tu peux en plus mélanger des langues sans soucis...

    l'interclassement lui sert à déterminer la façon de considérer les caractères selon la casse voir les accents éventuels lors des comparaisons de caractères

    la dernière partie _ci ou _cs dépend de la gestion de casse qu'on veut:
    • _ci pour insensible
    • _cs pour sensible


    la partie avant _ci ou _cs dépend de si on est en iso ou utf8...

    pour l'utf8 on préfère _general_ci car il permet une plus grande rapidité car il implémente un jeu de règles de comparaison plus restraint mais sinon tu as _unicode_ci pour le jeu complet

    pour l'iso on a le nom du jeu suivi de la langue à supportée, par exemple:
    latin1_german_ci

    tu as la liste complète des collations ici et plus d'infos sur les jeux de caractères et collations ici.

    par contre, il faut être cohérent partout, soit c'est l'utf8, soit l'iso...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses et pour les liens que je n'ai pas encore parcourus dans leur intégralité masi le premier s'est avéré très intéressant

    Eric, merci pour tes précisions, quelle action faut-il que j'entreprenne si je décidais de passer base de donnée et tables en utf-8 ?
    Et surtout pour répondre à l'une de mes questions : qu'est ce qui est conseillé au niveau du stockage dans la base de données.
    Prenons le cas du "é" : faut-il privilégier é ou &eacute; ?

    Encore merci pour votre aide

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    il faut que tu ais latin1 coté sgbd et iso-... coté php/html...

    quand tu voudras convertir faudra faire des alter table pour faire la conversion des colonnes vers utf8 et mettre la collation utf8_... désirée...

    le secret là encore c'est de pas mélanger les encodages... c'est le plus sur moyen de galérer ensuite...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 33
    Points : 6
    Points
    6
    Par défaut
    Merci pour ce complément d'infos ... je suis entrain de réfléchir à passer en UTF-8 mais je préfère faire quelques tests au préalable, histoire de ne pas avoir de mauvaises surprises avec certaines fonctions php

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2006, 19h46
  2. [oracle 8i] Jeux de caractères
    Par Nounoursonne dans le forum Oracle
    Réponses: 1
    Dernier message: 21/03/2006, 15h13
  3. Tutoriels sur les jeux de caractères
    Par tnntwister dans le forum Outils
    Réponses: 4
    Dernier message: 23/01/2006, 15h55
  4. jeux de caractères
    Par AHO dans le forum InterBase
    Réponses: 11
    Dernier message: 05/02/2003, 18h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo