Issue #13560: os.strerror() now uses the current locale encoding instead of UTF-8
diff --git a/Python/errors.c b/Python/errors.c
index 36b8c54..122e444 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -343,9 +343,7 @@
     PyObject *message;
     PyObject *v, *args;
     int i = errno;
-#ifndef MS_WINDOWS
-    char *s;
-#else
+#ifdef MS_WINDOWS
     WCHAR *s_buf = NULL;
 #endif /* Unix/Windows */
 
@@ -355,11 +353,14 @@
 #endif
 
 #ifndef MS_WINDOWS
-    if (i == 0)
-        s = "Error"; /* Sometimes errno didn't get set */
-    else
-        s = strerror(i);
-    message = PyUnicode_DecodeUTF8(s, strlen(s), "ignore");
+    if (i != 0) {
+        char *s = strerror(i);
+        message = PyUnicode_DecodeLocale(s, 1);
+    }
+    else {
+        /* Sometimes errno didn't get set */
+        message = PyUnicode_FromString("Error");
+    }
 #else
     if (i == 0)
         message = PyUnicode_FromString("Error"); /* Sometimes errno didn't get set */