Sto chiamando pipe.communicate
dal modulo Python subprocess
da Python 2.6. Ottengo il seguente errore da questo codice:Codifica Python per pipe.communicate
from subprocess import Popen
pipe = Popen(cwd)
pipe.communicate(data)
Per un arbitrario cwd
, e dove data
che contiene unicode (in particolare 0xE9):
Exec. exception: 'ascii' codec can't encode character u'\xe9' in position 507: ordinal not in range(128)
Traceback (most recent call last):
... stdout, stderr = pipe.communicate(data)
File
"/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py",
line 671, in communicate
return self._communicate(input)
File
"/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py",
line 1177, in _communicate
bytes_written = os.write(self.stdin.fileno(), chunk)
Questo sta accadendo, presumo, perché pipe.communicate()
si aspetta Stringa codificata ASCII, ma data
è unicode.
È questo il problema che sto incontrando e ho trovato un modo per passare l'unicode a pipe.communicate()
?
Grazie per la lettura!
Brian
Che cosa intendi per "contiene Unicode"? In particolare, 0xE9 non è, di per sé, un punto di codice Unicode valido in qualsiasi codifica comune. – tripleee