python3中的io.StringIO编码

Gio*_*hal 6 encoding utf-8 stringio python-3.x

我似乎无法找到io.StringIOPython3中的默认编码.这是区域设置stdio吗?

我该怎么改变它?

有了stdio,似乎只是重新打开正确的编码工作,但没有重新打开的事情StringIO.

Sve*_*ach 9

该类io.StringIO使用strPython 3中的对象.也就是说,您只能从实例读取和写入字符串StringIO.有没有编码-你必须选择一个,如果你想编码你得到了弦StringIObytes对象,但字符串本身没有编码.

(当然字符串需要在某些编码中内部表示.根据您的解释器,该编码是UCS-2或UCS-4,但在使用Python时您没有看到此实现细节.)


Jon*_*yJD 5

正如在另一个答案中已经提到的,StringIO将(unicode)字符串保存在内存中,因此没有编码。如果您确实需要具有编码的类似对象,您可能需要查看BytesIO.

如果你想设置 stdout 的编码:你不能。至少不是直接的,因为它sys.stdout.encoding是只写的并且(通常)由 Python 自动确定。(使用管道时不起作用)如果您想将具有特定编码的字节字符串写入 stdout,那么您可以使用正确的编码(Python 2)对打印的字符串进行编码,或者使用sys.stdout.buffer.write()(Python 3)发送已编码的字符串字节字符串到标准输出。