Как уже упоминалось в другом ответе, StringIO
сохраняет (unicode) строки в памяти и, следовательно, не имеет кодировки.
Если вам нужен подобный объект с кодировкой, вы можете взглянуть на BytesIO
.
Если вы хотите установить кодировку stdout: вы не можете. По крайней мере, не напрямую, поскольку sys.stdout.encoding
только для записи и (часто) автоматически определяется Python. (Не работает при использовании труб)
Если вы хотите записать байтовые строки с определенной кодировкой в стандартный вывод, то вы либо просто кодируете строки, которые вы печатаете, с правильной кодировкой (Python 2), либо используете sys.stdout.buffer.write()
(Python 3) для отправки уже закодированных байтовых строк в стандартный вывод.