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

Installation MySQL Discussion :

taille des varchars pour utf8


Sujet :

Installation MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut taille des varchars pour utf8
    Bonjour,

    j'ai des tables en utf8 dont les champs sont de type varchar(15)

    Je souhaite dont stocker dans ce champ des chaines <= 15 caractères

    or en utf8 les caractères accentués sont encodés sur plusieurs octets,
    pour

    "èèèèèèèèèèèèèèè"

    j'obtiens

    "èèèèèèèèèèèèèèè"

    qui une fois inséré dans ma table est tronqué à 15 caractères:

    "èèèèèèèÃ"

    Faut-il que je rediemensionne tous mes varchars pour prendre en compte les potentiels débordements en les passants de 15 à 45 ?

    Y a t'il une autre façon?

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    le mieux serait d'indiquer directement un charset utf-8 dans ta bdd...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    MySQL charset: UTF-8 Unicode (utf8)

    Mes tables et ma base sont en utf8_unicode_ci.C'est bon non?
    je ne vois pas quoi faire de plus. Ou est le pb?

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    effectivement... si ton champ est en UTF-8... tu es sûr qu'il n'y a pas de problème à l'insertion ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    voici l'entete de mes pages html.

    Mes pages affichent correctement les texte provenant de ma base de donnée.

    Lors de l'insertion via un formulaire faut-il forcer un encodage utf8 via php?
    Dois-je utiliser utf8-encode() si les données proviennent de pages html UTF8?

  6. #6
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    essaie d'utiliser utf8_encode, ou utf8_decode... peut-être qu'un des deux y fera...
    parce que normalement, la taille d'un varchar est en caractères, pas en octets (je vais vérifier... )


    [EDIT]

    Arf, quelle est ta version de MySQL ?
    Before MySQL 4.1, the length is interpreted as number of bytes
    http://dev.mysql.com/doc/refman/4.1/en/char.html

    donc effectivement ça serait des octets...

    arf, comme UTF-8 stocke sur un nombre d'octets variables, ça va être *** à modifier :'(
    peut-être mettre 15*4 (taille max) puis ensuite tester dans PHP pour récupèrer uniquement les 15premiers caractères UTF-8...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Ben via utf8_decode() il m'insere correctement les caractères "èèèééèéèéèéèèèè" dans la bdd et sou phpmyadmin je vois désormais "éèèèééèéèéèéèèè" et plus son équivalent utf8 mais par contre je pense qu'a la sortie de la bdd il faudra que je recode tout en utf8 via utf8_encode car dans mes docs je vois désormais "?????????".

    Dans phpMyadmin doit-on voir la chaine sous forme "èèèééèéèéèéèèèè" ou comme çà "éèéèéèéÃ"

    Je ne pense pas que c'est la bonne solution car il faudari que j'encode et décode à chaque requete. A mon avis c'est un pb lié à la bdd.

  8. #8
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    effectivement, c'es pas pratique...

    il y avait quelqu'un qui avait un problème de ce style, il fallait modifier les encoding du point de connexion entre MySQL et PHP...

    mais c'est vrai que ça demande de tout les temps naviguer entre les deux encoding...

    comme je l'ai mis précédemment, je pense que seul une version de MySQL >= 4.1 résoudra ton problème... puisque ça permettra de spécifier une longueur en caractères et non en octets...

    pour ensuite que phpMyAdmin affiche les bon caractères, il faut vérifier qu'il est bien en UTF-8... (ça se met sur la page d'accueil je crois )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    version 4.1.9 , oui ja sais il faut que je la mette a jour :-)

    arf, comme UTF-8 stocke sur un nombre d'octets variables, ça va être *** à modifier :'(
    peut-être mettre 15*4 (taille max) puis ensuite tester dans PHP pour récupèrer uniquement les 15 premiers caractères UTF-8...
    oui *** je ne t'en parle même pas. Je pensais que c'etait la bdd qui gerait ca en interne.

    plutot les redimensionner en 15*3 car pour l'instant utf8 ne gère pas les 4 octets. Puis pour php le tout est transparent, ca ne posera pas de pb.

    comme je l'ai mis précédemment, je pense que seul une version de MySQL >= 4.1 résoudra ton problème... puisque ça permettra de spécifier une longueur en caractères et non en octets...
    Vais intaller la 5 dans pas longtemps, je suis curieux

    pour ensuite que phpMyAdmin affiche les bon caractères, il faut vérifier qu'il est bien en UTF-8... (ça se met sur la page d'accueil je crois )
    c'est fait et je vois toujours "éèéèéèéÃ" mais bon c'est pas si dérangeant, c'est juste une bizarrerie de plus.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    merci a toi, je verrai pour la suite quand j'aurais installé la v.5

  11. #11
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    si tu as MySQL 4.1.9, c'est >4.1 donc c'est qu'il y a un problème d'encoding quelque part...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

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

Discussions similaires

  1. [ASE 12.5.3] taille des stripes pour la sauvegarde
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 18/03/2008, 11h26
  2. Limité taille des lignes pour un textearea
    Par producteur1023 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/01/2008, 11h08
  3. Réduire la taille des photos pour mon site
    Par aweb dans le forum Imagerie
    Réponses: 3
    Dernier message: 07/12/2006, 11h57
  4. Réponses: 4
    Dernier message: 05/12/2006, 15h50
  5. Taille des enregistrements pour differents base.
    Par Bourak dans le forum Bases de données
    Réponses: 1
    Dernier message: 10/02/2006, 15h11

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