Domanda

Ecco una domanda che mi ha permuto per molto tempo.Io uso BBBEDIT per modificare il codice Python.Esecuzione del codice dall'interno dell'editor, come lo capisco, genera il proprio processo Python, esegue il codice e scrive l'output in un file di registro.Quindi BBedit non conosce le variabili di ambiente e tali.Se lo provo alla riga di comando in un terminale:

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

Trova e buono.Ma se ho il seguente file in BBedit:

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

s = u'háček'
print s
.

e prova a eseguirlo dall'interno dell'editor, ottengo:

UnicoDeenCodeerror: il codec 'ASCII' non può codificare i caratteri in posizione 1-2: Ordinale non nel range (128)

Quindi devo farlo:

print s.encode('utf-8')
.

Qualcuno può familiarizzare con BBedit illuminare per me cosa sta succedendo qui?C'è un modo per dire all'editore come comportarsi in presenza di personaggi Unicode?

Grazie, Jon

È stato utile?

Soluzione 2

Nell'evento improbabile che altri abbiano incontrato questo, ecco uno strano angolo di pitone con sacco di python che non sapevo nulla di:

Le buone persone di Bbedit chiarivano questo per me.

Il problema specifico, appare, è causato da una condizione di runtime in Bbedit che non hanno rintracciato, ma c'è questo lavoro:

Python sa di uno speciale script denominato "SiteCustomize.py"

Se metti il seguente testo in SiteCustomize.py

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

e spostare questo file in

/ Path / to / Python / Installazione / Pacchetti siti /

Poi quando BBEDIT genera un processo Python, il modulo Python 'sito "chiama automaticamente sys.setdefaultencoding () e quindi dopo aver impostato la codifica predefinita per la sessione (e questo è il bit strano) rimuove SetDefaultNencoding dallo spazio dei nomi SYS.Vedi:

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

Altri suggerimenti

Se BBEDIT si basa su file esterni e / o reindirizzamento per farlo, allora no, non c'è modo di risolverlo.La fissaggio richiederebbe di colpire alcune strutture python interne per dirlo a utilizzare UTF-8 durante la codifica dell'output.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top