diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 5b67da1..bd799b2 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -1057,6 +1057,15 @@
                 f = open(os.path.join(self.dir, fn), 'rb')
                 f.close()
 
+        @unittest.skipUnless(hasattr(os, 'statvfs'),
+                             "need os.statvfs()")
+        def test_statvfs(self):
+            # issue #9645
+            for fn in self.unicodefn:
+                # should not fail with file not found error
+                fullname = os.path.join(self.dir, fn)
+                os.statvfs(fullname)
+
         def test_stat(self):
             for fn in self.unicodefn:
                 os.stat(os.path.join(self.dir, fn))
diff --git a/Misc/NEWS b/Misc/NEWS
index b9b14a7..45c2e32 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -189,6 +189,10 @@
 Library
 -------
 
+- Issue #9644: Fix the encoding used by os.statvfs(): use the filesystem
+  encoding with the surrogateescape error handler, instead of UTF-8 in strict
+  mode.
+
 - Issue #16819: IDLE method completion now correctly works for bytes literals.
 
 - Issue #9586: Redefine SEM_FAILED on MacOSX to keep compiler happy.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 0d2919b..e7e5305 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -6463,18 +6463,22 @@
 static PyObject *
 posix_statvfs(PyObject *self, PyObject *args)
 {
+    PyObject *opath, *result = NULL;
     char *path;
     int res;
     struct statvfs st;
-    if (!PyArg_ParseTuple(args, "s:statvfs", &path))
+    if (!PyArg_ParseTuple(args, "O&:statvfs", PyUnicode_FSConverter, &opath))
         return NULL;
+    path = PyBytes_AS_STRING(opath);
     Py_BEGIN_ALLOW_THREADS
     res = statvfs(path, &st);
     Py_END_ALLOW_THREADS
     if (res != 0)
-        return posix_error_with_filename(path);
+        return posix_error_with_allocated_filename(opath);
 
-    return _pystatvfs_fromstructstatvfs(st);
+    result = _pystatvfs_fromstructstatvfs(st);
+    Py_DECREF(opath);
+    return result;
 }
 #endif /* HAVE_STATVFS */
 
