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

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