python3中的io.StringIO编码

时间:2012-02-20 21:43:56

标签: encoding utf-8 python-3.x stringio

我似乎无法找到Python3中io.StringIO的默认编码。它是stdio的区域设置吗?

如何更改?

使用stdio,似乎只是重新打开正确的编码,但没有重新打开StringIO

2 个答案:

答案 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

相关问题