io.StringIO
Python3のデフォルトのエンコーディングが見つからないようです。ロケールと同じstdio
ですか?
どうすれば変更できますか?
を使用stdio
すると、正しいエンコーディングで再度開くだけで機能するように見えますが、を再度開くなどのことはありませんStringIO
。
io.StringIO
Python3のデフォルトのエンコーディングが見つからないようです。ロケールと同じstdio
ですか?
どうすれば変更できますか?
を使用stdio
すると、正しいエンコーディングで再度開くだけで機能するように見えますが、を再度開くなどのことはありませんStringIO
。
このクラスio.StringIO
はstr
、Python 3 のオブジェクトを操作します。つまり、インスタンスからのみ文字列の読み取りと書き込みを行うことができます。エンコーディングはありません。取得したStringIO
文字列をオブジェクトでエンコードする場合は、エンコーディングを選択する必要がありますが、文字列自体にはエンコーディングがありません。StringIO
bytes
(もちろん、文字列は何らかのエンコーディングで内部的に表現する必要があります。インタープリターに応じて、そのエンコーディングは UCS-2 または UCS-4 のいずれかですが、Python で作業する場合、この実装の詳細は表示されません。)
別の回答で既に述べたように、StringIO
(Unicode) 文字列をメモリに保存するため、エンコーディングはありません。エンコーディング付きの同様のオブジェクトが必要な場合は、 を参照してくださいBytesIO
。
stdout のエンコーディングを設定したい場合: できません。sys.stdout.encoding
書き込み専用であり、(多くの場合) Python によって自動的に決定されるため、少なくとも直接ではありません。(パイプを使用する場合は機能しません)特定のエンコーディングでバイト文字列を標準出力に書き込みたい場合は、出力する文字列を正しいエンコーディングでエンコードするか(Python 2)、またはsys.stdout.buffer.write()
(Python 3)を使用してすでにエンコードされたものを送信しますバイト文字列を標準出力に。