Flacon: le rendu des caractères unicode dans le modèle
Dans une Fiole application que je travaille, j'ai besoin d'afficher du texte Unicode pour les utilisateurs. Lors des tests en Python, shell, mes fonctions ne semblent fonctionner très bien sur:
>>> sr = rym_scraper.get_artist_info('sigur ros')
>>> print sr.name # a string encoded using str.encode('utf8')
Sigur Rós
Lorsque j'ai fait un test dans l'application, j'obtiens ceci:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
Avec la finale d'exception dans le modèle, il produit cette trace de la pile:
Traceback (most recent call last):
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/eric/projects/whatshouldilistento/app/app.py", line 29, in enter_band
return band_info(form.name.data)
File "/Users/eric/projects/whatshouldilistento/app/app.py", line 45, in band_info
return render_template('band_info.html')
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/templating.py", line 125, in render_template
context, ctx.app)
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/flask/templating.py", line 107, in _render
rv = template.render(context)
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
return self.environment.handle_exception(exc_info, True)
File "/Users/eric/Envs/whatshouldilistento/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/eric/projects/whatshouldilistento/app/templates/band_info.html", line 9, in top-level template code
<div>{{ message }}</div>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
Comment puis-je afficher la chaîne Unicode dans mon template affiché?
essayez
Qui fonctionne, ne sais pas pourquoi je n'avais pas pensé à ça. Merci beaucoup!
Post de réponse, veuillez sélectionner afin que d'autres obtiendrez la réponse est correcte quand ils viennent à votre post 🙂
{{ message.decode('utf-8') }}
Qui fonctionne, ne sais pas pourquoi je n'avais pas pensé à ça. Merci beaucoup!
Post de réponse, veuillez sélectionner afin que d'autres obtiendrez la réponse est correcte quand ils viennent à votre post 🙂
OriginalL'auteur Eric Fulmer | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
Votre message est non-ascii, vous avez à les décoder et de les convertir
unicode
.vous pouvez le convertir en utilisant.
Si vous avez du décodage dans
utf-8
alors vous devez écrire à chaque foisOriginalL'auteur Nilesh
ajouter en dessous de votre démarrage du fichier
cela fonctionne pour moi
cette méthode fonctionne parfaitement pour moi. J'ai essayé beaucoup d'autres méthodes, mais ne fonctionne pas. Merci beaucoup
Fonctionne très bien mais je ne comprends pas ce que le "recharger" appel accomplit. Je pense que le rechargement d'un module à droite après l'importation, il doit être un no-op. Aussi, le documentation conseille spécifiquement à l'encontre de rechargement sys:
OriginalL'auteur tyan
Mes chaînes unicode ont été intégrés dans les tableaux et les objets, et je les ai passés à l'aide de
json.dumps()
pour se débarrasser de l'unicode des références.https://stackoverflow.com/a/50612950/999943
OriginalL'auteur phyatt