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