Tôi đang gọi pipe.communicate
từ mô-đun subprocess
của Python từ Python 2.6. Tôi nhận được lỗi sau đây từ mã này:Mã hóa Python cho pipe.communicate
from subprocess import Popen
pipe = Popen(cwd)
pipe.communicate(data)
Đối với một tùy cwd
, và nơi data
chứa unicode (đặc biệt là 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)
này đang xảy ra, tôi đoán, vì pipe.communicate()
là mong đợi Chuỗi được mã hóa ASCII, nhưng data
là unicode.
Đây có phải là sự cố mà tôi đang gặp phải không và tôi có cách để chuyển mã unicode thành pipe.communicate()
không?
Cảm ơn bạn đã đọc!
Brian
Ý bạn là gì khi "chứa Unicode"? Cụ thể, 0xE9 không phải là một điểm mã Unicode hợp lệ trong bất kỳ mã hóa thông thường nào. – tripleee