New submission from Manuel Jacob <m...@manueljacob.de>: The documentation for the curses module (https://docs.python.org/3.9/library/curses.html) has the following note:
> Since version 5.4, the ncurses library decides how to interpret non-ASCII > data using the nl_langinfo function. That means that you have to call > locale.setlocale() in the application and encode Unicode strings using one of > the system’s available encodings. This example uses the system’s default > encoding: > > import locale > locale.setlocale(locale.LC_ALL, '') > code = locale.getpreferredencoding() > > Then use code as the encoding for str.encode() calls. The recommendation to call `locale.setlocale(locale.LC_ALL, '')` is problematic as it initializes all locale categories to the user settings, which might be unintended and is not necessary for curses to work correctly. Initializing LC_CTYPE is sufficient for nl_langinfo() to return the correct encoding. Current versions of Python (*) initialize LC_CTYPE at interpreter startup. Therefore calling locale.setlocale() should not be necessary at all. The curses module automatically encodes strings. Therefore the recommendation to manually encode strings is outdated. (*) It seems to be the case since 177d921c8c03d30daa32994362023f777624b10d. Why was is not previously done on Python 2 and on Python 3 on Windows? ---------- assignee: docs@python components: Documentation messages: 372178 nosy: docs@python, mjacob priority: normal severity: normal status: open title: Remove recommendation in curses module documentation to initialize LC_ALL and encode strings _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41091> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com