我似乎找不到io.StringIO
Python3 中的默认编码是什么。它是与 locale 一样stdio
吗?
我怎样才能改变它?
使用stdio
, 似乎只是用正确的编码重新打开就可以了,但是没有像重新打开StringIO
.
我似乎找不到io.StringIO
Python3 中的默认编码是什么。它是与 locale 一样stdio
吗?
我怎样才能改变它?
使用stdio
, 似乎只是用正确的编码重新打开就可以了,但是没有像重新打开StringIO
.
该类io.StringIO
适用str
于 Python 3 中的对象。也就是说,您只能从实例中读取和写入字符串。StringIO
没有编码——如果你想对从对象StringIO
中得到的字符串进行编码,你必须选择一个bytes
,但字符串本身没有编码。
(当然,字符串需要在内部以某种编码表示。根据您的解释器,该编码是 UCS-2 或 UCS-4,但在使用 Python 时您看不到此实现细节。)
正如另一个答案中已经提到的,StringIO
将(unicode)字符串保存在内存中,因此没有编码。如果您确实需要带有编码的类似对象,您可能需要查看BytesIO
.
如果你想设置标准输出的编码:你不能。至少不是直接的,因为sys.stdout.encoding
它是只写的并且(通常)由 Python 自动确定。(使用管道时不起作用)如果您想将具有某种编码的字节字符串写入标准输出,那么您要么只使用正确的编码(Python 2)对打印的字符串进行编码,要么使用sys.stdout.buffer.write()
(Python 3)发送已经编码的字节字符串到标准输出。