Use os.fsencode() to support surrogates
diff --git a/Demo/zlib/minigzip.py b/Demo/zlib/minigzip.py
index 52e81b9..b57de73 100755
--- a/Demo/zlib/minigzip.py
+++ b/Demo/zlib/minigzip.py
@@ -31,7 +31,7 @@
     write32(output, mtime)
     output.write(b'\002')                # ... slowest compression alg. ...
     output.write(b'\377')                # ... OS (=unknown) ...
-    bfilename = filename.encode(sys.getfilesystemencoding())
+    bfilename = os.fsencode(filename)
     output.write(bfilename + b'\000')    # ... original filename ...
 
     crcval = zlib.crc32(b'')
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 37da71e..2d68b73 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -262,7 +262,7 @@
             return path
         userhome = pwent.pw_dir
     if isinstance(path, bytes):
-        userhome = userhome.encode(sys.getfilesystemencoding())
+        userhome = os.fsencode(userhome)
         root = b'/'
     else:
         root = '/'