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

MkFramework Discussion :

Traitement UTF-8 dans le framework


Sujet :

MkFramework

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Traitement UTF-8 dans le framework
    Bonjours,
    tout d’abord merci encore pour la continuité des effort fais pour se très bon projet.

    Actuellement sur une version mkframework_v4_113_0_r280 pas encore télécharger la 114, je fais des teste pour refaire un forum qui existe sur le quelle je veux reprendre la BDD mysql encodée en UTF8-unicode_ci.
    J'ai donc repris des tables sans les données, la je rencontre plusieurs souci avec le MKF :
    - Les fichiers générer avec le builder sont tous en ISO, si je les converti en UTF-8 sans bom sa fonctionne mais j'ais des bug avec les caractère UTF8
    - Dans la génération CRUD, a la place des accants il y as des équivalent encoder en HTML du coup avec les colonnes de la BDD qui ont des accent, c'est problématique et fais planter le scripte PHP car la requet SQL n'aime pas trop les caractères utiliser (é pour é)

    J'ai passer 2 jours a fouinner le code sans réussire a modifier correctement le code du Framwork pour une interprétation correcte du UTF8, ça bloque toujoue a un moment ou un autre.
    Jâi pus modifier des fichier pour faire passer la requête SQL avec les "é" mais si j'enregistre les fichier en UTF8, les array générer par la class model me met des losange avec "?".
    Si je les laisse en ISO c'est ok mais les page web qui ont ses "?".

    La page est bien en UTF-8, html5, du coup je me demande dans le traitement des donnée si il ni as pas un traitement quelque part qui réencode a un moment les array.
    Je suis bine tomber sur le customHtmlentities, mais il ne me semble pas poser de souci c'est la même chose que j'utilise sur le forum actuelle.
    Le site.ini.php a bien la valeur de charset=UTF-8

    il me semble que tout est bien encoder en UTF8 avec les entêtes qu'il faut sauf l'encodage des fichiers php qui sont en ISO sans quoi les champs avec accent ne sont pas reconnu.

    Donc là je sèche j'ai besoin d'un coup de main...

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Quels fichiers sont générés en iso ? j'essai autant que faire se peut de ne pas avoir d'accent dans aucun de mes fichiers php afin qu'ils ne soient pas "signés"

    Si je comprends bien votre cas:
    1. vous avez une base mysql contenant des données en utf8
    2. lorsque vous générer un CRUD avec le builder, celui-ci ne fonctionne pas ou provoque des erreurs ?

    Vous pouvez faire un simple test: désactiver la conversion htmlentities
    Pour cela, dans le fichier conf/site.ini.php de votre projet, modifier la valeur de "xss.enabled", passez la à 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [security]
    (...)
    xss.enabled=0

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    capture005.png capture de la table actions (table de test pour les ACL)

    capture006.png capture de la vue actions->list.php, les "é" sont converti en caractère bizarre ou/et équivalent HTML

    capture007.png si je corrige le fichier avec les "é" et enregistre bien en UTF8 sans bom

    capture008.png Même que 007 mais converti en ANSI (ISO), Ont peux voir que la dernière ligne à bien la valeur "priorité" de la BDD se qui n'est pas le cas dans le 0007

    si j'ajoute un log dans le main->_liste() :

    2015-08-19;10:40:39;info;---vue: assignation [tActions]

    2015-08-19;10:40:39;Warning;action->main-_liste() $tActionsArray ( [0] => row_actions Object ( [sClassModel:protected] => model_actions [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [id] => 1 [nom] => Modérer [Priorité] => 0 ) [_tPropertyToUpdate:protected] => ) [1] => row_actions Object ( [sClassModel:protected] => model_actions [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [id] => 2 [nom] => Supprimer [Priorité] => 1 ) [_tPropertyToUpdate:protected] => ) [2] => row_actions Object ( [sClassModel:protected] => model_actions [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [id] => 3 [nom] => Modifier [Priorité] => 2 ) [_tPropertyToUpdate:protected] => ) [3] => row_actions Object ( [sClassModel:protected] => model_actions [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [id] => 4 [nom] => Répondre [Priorité] => 3 ) [_tPropertyToUpdate:protected] => ) [4] => row_actions Object ( [sClassModel:protected] => model_actions [_bChooseUpdate:abstract_row:private] => 1 [_tProperty:protected] => Array ( [id] => 5 [nom] => Voir [Priorité] => 4 ) [_tPropertyToUpdate:protected] => ) )

    2015-08-19;10:40:39;info;-layout: ajout appel vue [../module/actions/view/list.php] a la place [main]

    Ont voie ici les "é" qui sont bien interpréter toute fois le fichier log.txt est en ANSI

    Si j'édite une action, quant je fais enregistrer PHP plante:
    PDOStatement::execute():
    #0 [internal function]: exception_error_handler(2, 'PDOStatement::e...', 'D:\\WampServer\\w...', 251, Array)
    #1 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_sgbd_pdo.php(251): PDOStatement->execute(Array)
    #2 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_sgbd_pdo.php(204): abstract_sgbd_pdo->query('UPDATE actions ...', Array)
    #3 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_model.php(169): abstract_sgbd_pdo->update('actions', Array, Array)
    #4 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_row.php(64): abstract_model->update(Object(row_actions))
    #5 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_row.php(54): abstract_row->update()
    #6 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\model\model_actions.php(79): abstract_row->save()
    #7 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\module\actions\main.php(132): row_actions->save()
    #8 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\module\actions\main.php(58): module_actions->processSave()
    #9 D:\WampServer\www\mk\mkframework_v4\lib\framework\class_root.php(263): module_actions->_edit()
    #10 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\public\index.php(47): _root->run()
    #11 {main}

    je viens de tester aussi avec conf/site.ini.php "xss.enabled" à 0, cela ne change rien.
    Images attachées Images attachées     

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    je me demande si le problème ne vient pas de l'accent dans le nom du champ mysql
    Avez vous le problème sur un champ sans accent ?

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Une autre chose toute bête à tester:
    dans le champ dsn de votre connexion mysql pdo, ajouter ";charset=utf-8"

    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysqlExple.dsn="mysql:dbname=blog;host=localhost;charset=utf-8"
    mysqlExple.sgbd=pdo_mysql
    mysqlExple.username=root
    mysqlExple.password=root

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    [db]
    mysql.dsn="mysql:dbname=newp4f;host=localhost;charset=utf-8"

    il n'aime pas

    SQLSTATE[HY000] [2019] Unknown character set
    #0 D:\WampServer\www\mk\mkframework_v4\lib\framework\sgbd\pdo\sgbd_pdo_mysql.php(57): PDO->__construct('mysql:dbname=ne...', '****', '*****')
    #1 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_sgbd_pdo.php(245): sgbd_pdo_mysql->connect()
    #2 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_sgbd_pdo.php(150): abstract_sgbd_pdo->query('SELECT * FROM m...', Array)
    #3 D:\WampServer\www\mk\mkframework_v4\lib\framework\abstract\abstract_model.php(134): abstract_sgbd_pdo->findMany(Array, 'row_membres')
    #4 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\model\model_membres.php(19): abstract_model->findMany('SELECT * FROM m...')
    #5 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\model\model_membres.php(35): model_membres->findAll()
    #6 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\module\auth\main.php(39): model_membres->getListAccount()
    #7 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\module\auth\main.php(16): module_auth->checkLoginPass()
    #8 D:\WampServer\www\mk\mkframework_v4\lib\framework\class_root.php(263): module_auth->_login()
    #9 D:\WampServer\www\mk\mkframework_v4\data\genere\newp4f\public\index.php(47): _root->run()
    #10 {main}

    j'ai donc modifier ta proposition comme suite et c'est OK
    [db]
    mysql.dsn="mysql:dbname=newp4f;host=localhost;charset=UTF8;"

    Reste le petit souci du builder a la génération du CRUD, qui remplace les "é", je peux très bien les corrigé manuellement mais se qui serais bien c'est de pas à avoir a le faire.

    Je me demandais si il serais judicieuse a la création d'un nouveau projet de choisir l'encodage affin de démmarer directement avec une bonne configuration du MKf et du site générer ?

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Le remplacement des é dans le crud généré ?

    Pour le choix du charset à la création d'un projet, je note cette remarque pertinente

    Je rajouterais dans la FAQ

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Oui quant je crée un CRUD qui utilise une BDD avec des champ qui ont des "é" cela donne :
    Nom : capture006.png
Affichages : 198
Taille : 41,4 Ko

  9. #9
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Dans votre cas, je viens de faire le test, il faut:
    1. ajouter dans votre profil de connexion charset=utf8 avant de générer le CRUD
    2. dans le fichier de configuration du builder: conf/site.ini.php
    mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [security]
    (...)
    xss.enabled=0
    Le point 1: pour que la liste des colonnes retournées au builder soit bien en UTF8
    Le point 2: pour eviter qu'il convertisse le nom de la colonne mysql avec accent en html

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    ok merci pour ton aide.

    se sera pratique quant ont pourra choisir au moment de générer un nouveau site si ont veut de UTF8 ou non que tout ses paramètre soie ajouter automatiquement.

    Merci encore pour se supère Framework

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

Discussions similaires

  1. [Formulaires] Traitement des données dans une autre page...
    Par sekiryou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/03/2006, 09h08
  2. Traitement d'erreur dans VBA
    Par charleshbo dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/02/2006, 14h03
  3. [D4] Tps traitement : Objet Automation dans Library
    Par morgiou dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2006, 17h49
  4. Traitement de variable dans un état
    Par uskiki85 dans le forum Access
    Réponses: 7
    Dernier message: 08/11/2005, 16h47
  5. [CR]Traitement de chaines dans les formulas
    Par teckilax dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 05/07/2004, 09h01

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