Llamo a pipe.communicate
desde el módulo subprocess
de Python desde Python 2.6. Me sale el siguiente error de este código:Codificación de Python para pipe.communicate
from subprocess import Popen
pipe = Popen(cwd)
pipe.communicate(data)
Para una arbitraria cwd
, y donde data
que contiene Unicode (específicamente 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)
Esto está sucediendo, supongo, porque pipe.communicate()
espera Cadena codificada en ASCII, pero data
es unicode.
¿Es este el problema que estoy encontrando, y tengo una manera de pasar unicode a pipe.communicate()
?
¡Gracias por leer!
Brian
¿Qué quiere decir con "contiene Unicode"? Específicamente, 0xE9 no es, por sí mismo, un punto de código Unicode válido en cualquier codificación común. – tripleee