New submission from Terry J. Reedy <>:

Built-in open has an encoding parameter whose default value depends on the 
system: 'ascii' for some POSIX locales; 'latin1' or similar for most Windows 
sold in the USA or western Europe; and ???.  In idlelib.textview, the signature 
for view_file currently includes 'encoding=None'.  There have been 2 issues, 
#32826 and another, about tests using the default failing because of 'Löwis' on 
line 27 of CREDITS.txt.  It therefore seems an error for a global 
cross-platform application to use the default encoding.

To prevent this, we should remove '=None' from the encoding part of the 
view_file definition and make view_file calls explicitly pass an encoding.  For 
IDLE itself, this will be 'ascii' or 'utf-8'.

This expands upon a note by Cheryl Sabella in #32826 about one of the three 
calls that fail with the change until fixed.

I will not default to 'utf-8' because 'ascii' catches erroneous non-ascii 
characters in ascii-only files.  For instance, a draft of README.txt was 
prepared with an editor that replaced ascii " and " with left and right quotes. 
 I will not restricting the encoding otherwise because there might be external 
uses of the file that use other encodings.

PR to follow as soon as I get bpo number.

assignee: terry.reedy
components: IDLE
messages: 312085
nosy: terry.reedy
priority: normal
severity: normal
stage: commit review
status: open
title: IDLE: require encoding argument for textview.view_file
type: behavior
versions: Python 3.6, Python 3.7, Python 3.8

Python tracker <>
Python-bugs-list mailing list

Reply via email to