[Python-Dev] open(): set the default encoding to 'utf-8' in Python 3.3? (original) (raw)

Michael Foord fuzzyman at voidspace.org.uk
Tue Jun 28 18:50:29 CEST 2011


On 28/06/2011 17:34, Terry Reedy wrote:

On 6/28/2011 10:48 AM, Michael Foord wrote:

On 28/06/2011 15:36, Terry Reedy wrote:

S = open('myfile.txt').read() now return a text string in both Py2 and Py3 and a subsequent 'abc' in S works in both. Nope, it returns a bytestring in Python 2. Which, in Py2 is a str() object.

Yes, but not a "text string". The equivalent of the Python 2 str in Python 3 is bytes. Irrelevant discussion anyway.

In both Pythons, .read() in default mode returns an object of type str() and 'abc' is an object of type str() and so expressions involving undecorated string literals and input just work, but would not work if input defaulted to bytes in Py 3. Sorry if I was not clear enough. Well, I think you're both right. Both semantics break some assumption or other.

All the best,

Michael

-- http://www.voidspace.org.uk/

May you do good and not evil May you find forgiveness for yourself and forgive others May you share freely, never taking more than you give. -- the sqlite blessing http://www.sqlite.org/different.html



More information about the Python-Dev mailing list