]> granicus.if.org Git - python/commitdiff
Issue #5905: time.strftime() is now using the locale encoding, instead of
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 9 Dec 2011 19:19:24 +0000 (20:19 +0100)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 9 Dec 2011 19:19:24 +0000 (20:19 +0100)
UTF-8, if the wcsftime() function is not available.

Misc/NEWS
Modules/timemodule.c

index 91fae4505b4b45d5063c8109d88a153ab5f894bd..6d18ddf40dd962a910aa5cf52f8ffa149f71e842 100644 (file)
--- 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.
 
index bc908c07f96ed79b775df0bdaf7984cef6599dd7..33751fad500a0574041cf46b4cefbd9682c439f8 100644 (file)
@@ -3,8 +3,6 @@
 #include "Python.h"
 #include "_time.h"
 
-#define TZNAME_ENCODING "utf-8"
-
 #include <ctype.h>
 
 #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