Vous avez écrit le script Python, nous vous avons mis en garde de suite (9986 -), et il est toujours possible de télécharger le code de votre Mac, mais vous devez également vous assurer que tout va bien.
Il y a une interdiction si elle est présente au moins 10 secondes (10 bits) (Python 3.2.5 - OS X 10.4.11 iBook G4 PPC) et dont le code de la souris est parfait pour la version 13.10, mais une longue liste de questions est actuellement affichée:
Traceback (most recent call last):
File "snippets-convert.py", line 352, in <module>
main()
File "snippets-convert.py", line 41, in main
menu()
File "snippets-convert.py", line 47, in menu
print ("|\t ",snipper.decode(),"PySnipt'd",snipper.decode(),"\t|")
UnicodeEncodeError: 'ascii' codec can't encode character '\u2702' in position 0: ordinal not in range(128)
il n'y a pas de mots-clés:
print ("|\t ",chr(9986),"PySnipt'd",chr(9986),"\t|")
Question non résolue n'est-il pas la capacité de choisir quelqu'un? Vous avez donc besoin d'un système de contrôle, il y a peu de temps est l'unique système de contrôle utilisé. L'aspect du système opérationnel peut interférer avec le programme?
Ho letto queste domande:
nicodeEncodeError: codec 'ascii' non può codificare il carattere u '\ xef' in posizione 0: ordinal non compreso nell'intervallo (128) - Personnalisé
"UnicodeEncodeError: codec 'ascii' non può codificare il carattere" - Utilisateur 2.6, télécharger si
nicodeEncodeError: codec 'ascii' non può codificare il carattere? - Semblable base de données pliée, .encode('UTF-8')
, non disponible. Cliquez sur le lien suivant pour afficher le code de la caratère, qui ne contient pas de précision, mais .decode()
mi dà lo stesso errore. Non sono sicuro se lo sto facendo bene.
nicodeEncodeError: codec 'ascii' non può codificare i caratteri nella posizione 0-6: ordinale non nel range (128) - Non programmé, appliqué, appliqué, désactivé en greco.
Quelle est la cause de l'erreur? Dans le système d'exploitation, la version en Python est-elle qualifiée d'erreurs de programmation?
ÉDITER: interrogations erronées plus tard avec des problèmes dupliqués (ce qui est indiqué ci-dessus (tout ce qui a été dit ou modifié) :
Traceback (most recent call last):
File "snippets-convert.py", line 353, in <module>
main()
File "snippets-convert.py", line 41, in main
menu()
File "snippets-convert.py", line 75, in menu
main()
File "snippets-convert.py", line 41, in main
menu()
File "snippets-convert.py", line 62, in menu
search()
File "snippets-convert.py", line 229, in search
print_results(search_returned) # Print the results for the user
File "snippets-convert.py", line 287, in print_results
getPath(toRead) # Get the path for the snippet
File "snippets-convert.py", line 324, in getPath
snipXMLParse(path)
File "snippets-convert.py", line 344, in snipXMLParse
print (chr(164),child.text)
UnicodeEncodeError: 'ascii' codec can't encode character '\xa4' in position 0: ordinal not in range(128)
EDIT:
Entrer dans les images pour les personnes du terminal et afficher le support de la personne (voir les captures d'écran):
quand nous avons inséré une seule lettre cachée: \342\234\202
e quando premoEnterHo capito: -bash: ✂: command not found
EDIT Je suis arrivé @ J.F. Sebastian ha chiesto:
python3 test-io-encoding.py
:
PYTHONIOENCODING: None
locale(False): US-ASCII
device(stdout): US-ASCII
stdout.encoding: US-ASCII
device(stderr): US-ASCII
stderr.encoding: US-ASCII
device(stdin): US-ASCII
stdin.encoding: US-ASCII
locale(False): US-ASCII
locale(True): US-ASCII
python3 -S test-io-encoding.py
:
PYTHONIOENCODING: None
locale(False): US-ASCII
device(stdout): US-ASCII
stdout.encoding: US-ASCII
device(stderr): US-ASCII
stderr.encoding: US-ASCII
device(stdin): US-ASCII
stdin.encoding: US-ASCII
locale(False): US-ASCII
locale(True): US-ASCII
ÉDITER Comment fonctionne-t-il "hackerish"? fornita da @PauloBu:
Venez puoi vedere, poser une question à la défense (Yay!), Ma vie est une erreur. Traceback/errore:
+-=============================-+
✂Traceback (most recent call last):
File "snippets-convert.py", line 357, in <module>
main()
File "snippets-convert.py", line 44, in main
menu()
File "snippets-convert.py", line 52, in menu
print("|\t "+sys.stdout.buffer.write(chr(9986).encode('UTF-8'))+" PySnipt'd "+ sys.stdout.buffer.write(chr(9986).encode('UTF-8'))+" \t|")
TypeError: Can't convert 'int' object to str implicitly
ÉDITE Résultats de la discussion pour la discussion # PauloBu:
+-=============================-+
|
✂ PySnipt'd
✂ |
+-=============================-+
EDIT:
E la sua correzione per la sua correzione:
+-=============================-+
✂✂| PySnipt'd |
+-=============================-+
Lorsque Python imprime et produit en sortie, il le code automatiquement sur le support cible. Si c'est un fichier, UTF-8 sera utilisé par défaut et tout le monde sera content, mais s'il s'agit d'un terminal, Python déterminera le codage utilisé par le terminal et tentera de coder la sortie à l'aide de celui-ci.
Cela signifie que si votre terminal utilise ascii
comme encodage, Python tente d'encoder scissor
char en ascii. Bien sûr, ascii ne le prend pas en charge, vous obtenez donc une erreur de décodage Unicode.
C'est pourquoi vous devez toujours coder explicitement votre sortie. Explicite vaut mieux qu'implicite Pour corriger votre code, vous pouvez faire:
import sys
sys.stdout.buffer.write(chr(9986).encode('utf8'))
Cela semble un peu hackerish. Vous pouvez également définir PYTHONIOENCODING = utf-8 avant d'exécuter le script. Je suis mal à l'aise avec les deux solutions. Probablement votre console ne supporte pas utf-8 et vous voyez du charabia. Mais votre programme se comportera correctement.
Ce que je vous recommande fortement si décidément avez besoin d'afficher une sortie correcte sur votre console est de configurer votre console pour utiliser un autre codage, qui prend en charge le caractère scissor
. (utf-8 peut-être). Sur Linux, cela peut être réalisé en faisant: export lang=UTF_8
. Sous Windows, vous modifiez la page de code de la console avec chcp
. Il suffit de comprendre comment définir utf8 dans le vôtre et à mon humble avis, ce sera la meilleure solution.
print
et sys.stdout.write
car ils sont fondamentalement les mêmes. En ce qui concerne votre code, la méthode hackerish serait la suivante:sys.stdout.buffer.write(("|\t "+ chr(9986) +" PySnipt'd " + chr(9986)+" \t|").encode('utf8'))
Je vous suggère de lire dans la documentation pour voir ce qui se passe sous la hotte avec la fonction print
et avec sys.stdout
: http://docs.python.org/3/library/sys.html#sys.stdin
J'espère que cela t'aides!
test_io_encoding.py
output suggère de modifier vos paramètres locale
, par exemple, définissez LANG=en_US.UTF-8
.
La première erreur peut être due au fait que vous essayez de décoder une chaîne qui est déjà Unicode. Python 2 tente de l'encoder en utilisant un encodage de caractères par défaut ('ascii'
) avant avant de le décoder en utilisant (éventuellement) un encodage de caractères différent. L'erreur se produit à l'étape encode
:
>>> u"\u2702".decode() # Python 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2702' in position 0: ordinal not in range(128)
Il semble que vous exécutiez votre script en utilisant Python 2 au lieu de Python 3. Vous obtiendriez:
>>> "\u2702".decode() # Python 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'
erreur différente sinon.
Lâchez simplement l'appel .decode()
:
print("|\t {0} PySnipt'd {0} \t|".format(snipper))
Le deuxième problème est dû à l’impression d’une chaîne Unicode dans un tube:
$ python3 -c'print("\u2702")'
✂
$ python3 -c'print("\u2702")' | cat
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\u2702' in position 0: ordinal not in range(128)
Définissez la variable d’environnement PYTHONIOENCODING
appropriée:
$ PYTHONIOENCODING=utf-8 python3 -c'print("\u2702")' | cat
✂
le terminal affiche simplement ceci:
| b'\xe2\x9c\x82' PySnipt'd b'\xe2\x9c\x82' |
Si snipper
est un objet bytes
, laissez les appels snipper.decode()
.
$ python3 -c"print(b'\xe2\x9c\x82'.decode())"
✂
$ python3 -c"print(b'\xe2\x9c\x82'.decode())" | cat
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\u2702' in position 0: ordinal not in range(128)
Le correctif est le même:
$ PYTHONIOENCODING=utf-8 python3 -c"print(b'\xe2\x9c\x82'.decode())" | cat
✂
Mes paramètres régionaux sont définis sur de_AT.UTF-8 mais ces lignes dans /etc/profile
.__ étaient manquantes:
export LANG=de_AT.UTF-8
export LANGUAGE=de_AT.UTF-8
export LC_ALL=de_AT.UTF-8
déconnexion/connexion et votre problème devrait être résolu
Pour vérifier si tous les paramètres régionaux sont définis correctement, saisissez locale
dans votre terminal.
Le résultat devrait ressembler à ceci:
LANG=de_AT.UTF-8
LANGUAGE=de_AT.UTF-8
LC_CTYPE="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_PAPER="de_AT.UTF-8"
LC_NAME="de_AT.UTF-8"
LC_ADDRESS="de_AT.UTF-8"
LC_TELEPHONE="de_AT.UTF-8"
LC_MEASUREMENT="de_AT.UTF-8"
LC_IDENTIFICATION="de_AT.UTF-8"
LC_ALL=de_AT.UTF-8