Fix for #8879.
Amaury noticed that this was originally written in a way that would fail on
names that can't be encoded with the mbcs codec. Restructured the function
to work with wide names first then narrow names second, to fall in line
with the way other functions are written in posixmodule.c.
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 978364c..5a37522 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -887,6 +887,11 @@
         self._test_link(bytes(self.file1, sys.getfilesystemencoding()),
                         bytes(self.file2, sys.getfilesystemencoding()))
 
+    def test_mbcs_name(self):
+        self.file1 += "\u65e5\u672c"
+        self.file2 = self.file1 + "2"
+        self._test_link(self.file1, self.file2)
+
 if sys.platform != 'win32':
     class Win32ErrorTests(unittest.TestCase):
         pass