You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=Nonecreated_at=<Date2020-06-23.15:26:57.516>labels= ['docs']
title='Remove recommendation in curses module documentation to initialize LC_ALL and encode strings'updated_at=<Date2020-06-25.22:25:01.188>user='https://github.com/manueljacob'
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:
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 177d921. Why was is not previously done on Python 2 and on Python 3 on Windows?
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: