Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème d'accent dans turbogears

3 réponses
Avatar
Sébastien Kirche
Bonjour,

compte tenu des précédentes discussions sur les frameworks de
développement web, je suis en train d'expérimenter turbogears.

J'ai suivi le tutoriel "wiki 20 minutes" qui permet de créer la base
d'un wiki et je rencontre un petit problème lorsque je saisis une chaîne
contenant des accents dans une page du wiki qui est stocké en base
(SQLite pour mon essai) dans une StringCol.

Pas de problème pour la saisie et la mise en base, ni pour l'affichage.
Par contre quand j'essaie de modifier le texte, j'ai une exception lors
du remplissage d'un champ edit de formulaire car mon accent ne fait pas
partie du jeu ascii.

Comme jusqu'alors je me cantonnais au python "simple" en console, je
suis en même temps en train de découvrir cherryPy, SQLObject, Kid et
toutes les différentes briques de turbogears, je n'ai pas perdu trop de
temps sur ce détail.

Un petit coup de pouce pour me mettre sur la voie de ce problème
d'encodage ?

--
Sébastien Kirche

3 réponses

Avatar
Olivier
Hello,



J'ai suivi le tutoriel "wiki 20 minutes" qui permet de créer la base
d'un wiki et je rencontre un petit problème lorsque je saisis une chaîne
contenant des accents dans une page du wiki qui est stocké en base
(SQLite pour mon essai) dans une StringCol.

Pas de problème pour la saisie et la mise en base, ni pour l'affichage.
Par contre quand j'essaie de modifier le texte, j'ai une exception lors
du remplissage d'un champ edit de formulaire car mon accent ne fait pas
partie du jeu ascii.

Un petit coup de pouce pour me mettre sur la voie de ce problème
d'encodage ?




Utilise plutôt une UnicodeCol. Ensuite, je suppose qu'il faut demander à
TG de régénérer le schéma.
Sinon, je trouve que tout déclarer en utf-8 (les templates et les
scripts) simplifie les choses.

Bon courage,

Olivier

Avatar
Sébastien Kirche
Le >07/24/2006 5:28:49 PM +0200, >Olivier disait :
Utilise plutôt une UnicodeCol. Ensuite, je suppose qu'il faut demander à
TG de régénérer le schéma.

Sinon, je trouve que tout déclarer en utf-8 (les templates et les
scripts) simplifie les choses.



Bon courage,


Merci pour tes encouragements.
Je crois que l'unicodification (ça se dit ?) doit être la solution au
problème, mais un problème persiste.

Je suis retourné sur le tutoriel wiki 20, j'ai consulté le wiki
turbogears qui préconise également l'utf-8 et j'ai fini par upgrader
turbogears sur la version de dev actuelle (0.9a8). J'ai pu au passage me
faire scotcher par les fonctionnalités de CatWalk et ModelDesigner (ajax ?)
J'ai recommencé le tutoriel mis à jour pour la nouvelle version mais je
bute sur un souci identique d'insérer un caractère accentué dans un edit
lorsqu'on passe dans la méthode edit de controllers.py.
Je pense que le problème est en cours de traitement dans cette alpha.

En attendant je vais éviter les accents.

Pour info : voici la backtrace :

500 Internal error

The server encountered an unexpected condition which prevented it from fulfilling the request.

Page handler: <bound method Root.index of <wiki20.controllers.Root object at 0x0169A970>>
Traceback (most recent call last):
File "c:python24libsite-packagesCherryPy-2.2.1-py2.4.eggcherrypy_cphttptools.py", line 105, in _run
self.main()
File "c:python24libsite-packagesCherryPy-2.2.1-py2.4.eggcherrypy_cphttptools.py", line 254, in main
body = page_handler(*virtual_path, **self.params)
File "<string>", line 3, in index
File "c:python24libsite-packagesTurboGears-0.9a8-py2.4.eggturbogearscontrollers.py", line 331, in expose
output = database.run_with_transaction(
File "<string>", line 5, in run_with_transaction
File "c:python24libsite-packagesTurboGears-0.9a8-py2.4.eggturbogearsdatabase.py", line 245, in so_rwt
retval = func(*args, **kw)
File "<string>", line 5, in _expose
File "c:python24libsite-packagesTurboGears-0.9a8-py2.4.eggturbogearscontrollers.py", line 348, in <lambda>
mapping, fragment, *args, **kw)))
File "c:python24libsite-packagesTurboGears-0.9a8-py2.4.eggturbogearscontrollers.py", line 382, in _execute_func
return _process_output(output, template, format, content_type, mapping, fragment)
File "c:python24libsite-packagesTurboGears-0.9a8-py2.4.eggturbogearscontrollers.py", line 69, in _process_output
tg_flash = _get_flash()
File "c:python24libsite-packagesTurboGears-0.9a8-py2.4.eggturbogearscontrollers.py", line 412, in _get_flash
message = unicode(message, 'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 23-25: invalid data


--
Sébastien Kirche

Avatar
Sébastien Kirche
Le 24 July 2006 à 23:58, Sébastien Kirche a formulé :

Je pense que le problème est en cours de traitement dans cette alpha.

En attendant je vais éviter les accents.


En fait toutes le nouvelles fonctionnalités ne sont pas encore
documentées.

J'ai réglé le problème en activant la ligne suivante du app.cfg :

kid.encoding="utf-8"

--
Sébastien Kirche