From df9ba347b89b311133ca8740e4ca8f8bb60bc516 Mon Sep 17 00:00:00 2001 From: Xavier de Gaye Date: Sat, 17 Dec 2016 09:19:11 +0100 Subject: Issue #28596: The preferred encoding is UTF-8 on Android. --- Lib/_bootlocale.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'Lib/_bootlocale.py') diff --git a/Lib/_bootlocale.py b/Lib/_bootlocale.py index 4bccac1139..0c61b0d3a0 100644 --- a/Lib/_bootlocale.py +++ b/Lib/_bootlocale.py @@ -14,11 +14,17 @@ else: try: _locale.CODESET except AttributeError: - def getpreferredencoding(do_setlocale=True): - # This path for legacy systems needs the more complex - # getdefaultlocale() function, import the full locale module. - import locale - return locale.getpreferredencoding(do_setlocale) + if hasattr(sys, 'getandroidapilevel'): + # On Android langinfo.h and CODESET are missing, and UTF-8 is + # always used in mbstowcs() and wcstombs(). + def getpreferredencoding(do_setlocale=True): + return 'UTF-8' + else: + def getpreferredencoding(do_setlocale=True): + # This path for legacy systems needs the more complex + # getdefaultlocale() function, import the full locale module. + import locale + return locale.getpreferredencoding(do_setlocale) else: def getpreferredencoding(do_setlocale=True): assert not do_setlocale -- cgit v1.2.1