• Victor Stinner's avatar
    bpo-29240: Fix locale encodings in UTF-8 Mode (#5170) · 7ed7aead
    Victor Stinner yazdı
    Modify locale.localeconv(), time.tzname, os.strerror() and other
    functions to ignore the UTF-8 Mode: always use the current locale
    encoding.
    
    Changes:
    
    * Add _Py_DecodeLocaleEx() and _Py_EncodeLocaleEx(). On decoding or
      encoding error, they return the position of the error and an error
      message which are used to raise Unicode errors in
      PyUnicode_DecodeLocale() and PyUnicode_EncodeLocale().
    * Replace _Py_DecodeCurrentLocale() with _Py_DecodeLocaleEx().
    * PyUnicode_DecodeLocale() now uses _Py_DecodeLocaleEx() for all
      cases, especially for the strict error handler.
    * Add _Py_DecodeUTF8Ex(): return more information on decoding error
      and supports the strict error handler.
    * Rename _Py_EncodeUTF8_surrogateescape() to _Py_EncodeUTF8Ex().
    * Replace _Py_EncodeCurrentLocale() with _Py_EncodeLocaleEx().
    * Ignore the UTF-8 mode to encode/decode localeconv(), strerror()
      and time zone name.
    * Remove PyUnicode_DecodeLocale(), PyUnicode_DecodeLocaleAndSize()
      and PyUnicode_EncodeLocale() now ignore the UTF-8 mode: always use
      the "current" locale.
    * Remove _PyUnicode_DecodeCurrentLocale(),
      _PyUnicode_DecodeCurrentLocaleAndSize() and
      _PyUnicode_EncodeCurrentLocale().
    7ed7aead
timemodule.c 49.5 KB