fix output handling for subprocesses with multi-byte chars
When using a german locale, program output may contain multi-byte chars such as "Umlaute". 'proc.stdout.read(1)' reads in only a single byte, triggering an exception when trying to decode that single byte.
By wrapping it into an TextIOWrapper, the text is read in char-by-char instead.