From 720f34a3e8567ee7c46ee7d8752617168bfb5258 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 9 Dec 2011 20:19:24 +0100 Subject: Issue #5905: time.strftime() is now using the locale encoding, instead of UTF-8, if the wcsftime() function is not available. --- Misc/NEWS | 3 +++ Modules/timemodule.c | 13 ++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 91fae45..6d18ddf 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -90,6 +90,9 @@ Core and Builtins Library ------- +- Issue #5905: time.strftime() is now using the locale encoding, instead of + UTF-8, if the wcsftime() function is not available. + - Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..". Patch by Tal Einat. diff --git a/Modules/timemodule.c b/Modules/timemodule.c index bc908c0..33751fa 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -3,8 +3,6 @@ #include "Python.h" #include "_time.h" -#define TZNAME_ENCODING "utf-8" - #include #ifdef HAVE_SYS_TYPES_H @@ -48,8 +46,6 @@ static long main_thread; #if defined(MS_WINDOWS) && !defined(__BORLANDC__) /* Win32 has better clock replacement; we have our own version below. */ #undef HAVE_CLOCK -#undef TZNAME_ENCODING -#define TZNAME_ENCODING "mbcs" #endif /* MS_WINDOWS && !defined(__BORLANDC__) */ #if defined(PYOS_OS2) @@ -502,7 +498,7 @@ time_strftime(PyObject *self, PyObject *args) fmt = format; #else /* Convert the unicode string to an ascii one */ - format = PyUnicode_AsEncodedString(format_arg, TZNAME_ENCODING, NULL); + format = PyUnicode_EncodeFSDefault(format_arg); if (format == NULL) return NULL; fmt = PyBytes_AS_STRING(format); @@ -546,8 +542,7 @@ time_strftime(PyObject *self, PyObject *args) #ifdef HAVE_WCSFTIME ret = PyUnicode_FromWideChar(outbuf, buflen); #else - ret = PyUnicode_Decode(outbuf, buflen, - TZNAME_ENCODING, NULL); + ret = PyUnicode_DecodeFSDefaultAndSize(outbuf, buflen); #endif PyMem_Free(outbuf); break; @@ -789,8 +784,8 @@ PyInit_timezone(PyObject *m) { #endif /* PYOS_OS2 */ #endif PyModule_AddIntConstant(m, "daylight", daylight); - otz0 = PyUnicode_Decode(tzname[0], strlen(tzname[0]), TZNAME_ENCODING, NULL); - otz1 = PyUnicode_Decode(tzname[1], strlen(tzname[1]), TZNAME_ENCODING, NULL); + otz0 = PyUnicode_DecodeFSDefaultAndSize(tzname[0], strlen(tzname[0])); + otz1 = PyUnicode_DecodeFSDefaultAndSize(tzname[1], strlen(tzname[1])); PyModule_AddObject(m, "tzname", Py_BuildValue("(NN)", otz0, otz1)); #else /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/ #ifdef HAVE_STRUCT_TM_TM_ZONE -- cgit v0.12