Question

Voici une question qui m'a perplexe pendant longtemps. J'utilise Bbedit pour modifier le code Python. L'exécution du code à partir de l'éditeur, si je le comprends, engendre son propre processus Python, exécute le code et écrit la sortie dans un fichier journal. Donc, Bbedit ne connaît pas les variables d'environnement et autres. Si j'essaye ceci sur la ligne de commande dans un terminal:

>>> s = 'háček'
>>> print s
háček

trouver et bien. Mais si j'ai le fichier suivant dans Bbedit:

#!/opt/local/bin/python
# -*- coding: utf-8 -*- # 

s = u'háček'
print s

Et essayez de l'exécuter à partir de l'éditeur que je reçois:

UnicodeencodeError: le codec 'ASCII' ne peut pas coder les caractères en position 1-2: ordinal pas dans la plage (128)

Je dois donc faire ceci:

print s.encode('utf-8')

Quelqu'un peut-il familiariser avec Bbedit pour moi que se passe-t-il ici? Existe-t-il un moyen de dire à l'éditeur comment se comporter en présence de caractères Unicode?

Merci, Jon

Était-ce utile?

La solution 2

Dans le cas improbable que d'autres ont rencontré cela, voici un coin étrange de Python Lore dont je ne savais rien:

Les bons gens de Bbedit ont clarifié cela pour moi.

Le problème spécifique, semble-t-il, est causé par une condition d'exécution dans Bbedit qu'ils n'ont pas retrouvé, mais il y a cette réalisation:

Python connaît un script spécial nommé "SiteCustomalize.py"

Si vous mettez le texte suivant dans SiteCustomalize.py

import sys
sys.setdefaultencoding('utf-8')

et déplacer ce fichier dans

/ Path / vers / python / installation / site-packages /

Ensuite, lorsque Bbedit engendre un processus Python, le module «Site» Python appelle automatiquement SYS.SetDefaultEncoding (), puis après avoir défini le codage par défaut pour la session (et c'est le bit bizarre) supprime SetDefaulTencoding à partir de l'espace de noms SYS. Voir:

http://docs.python.org/library/sys.html#sys.setdefaultEncoding

Autres conseils

Si Bbedit repose sur des fichiers externes et / ou une redirection pour ce faire, alors non, il n'y a aucun moyen de le réparer. La réparation nécessiterait de pousser certaines structures python internes afin de lui dire d'utiliser UTF-8 lors de la sortie de la sortie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top