diff --git a/source/interface/directoryContents.js b/source/interface/directoryContents.js
index <HASH>..<HASH> 100644
--- a/source/interface/directoryContents.js
+++ b/source/interface/directoryContents.js
@@ -47,7 +47,7 @@ function getDirectoryFiles(result, serverBasePath, requestPath, isDetailed = fal
                 } = item;
                 // Process the true full filename (minus the base server path)
                 const filename =
-                    serverBase === "/" ? normalisePath(href) : normalisePath(pathPosix.relative(serverBase, href));
+                    serverBase === "/" ? decodeURIComponent(normalisePath(href)) : decodeURIComponent(normalisePath(pathPosix.relative(serverBase, href)));
                 return prepareFileFromProps(props, filename, isDetailed);
             })
             // Filter out the item pointing to the current directory (not needed)
diff --git a/source/url.js b/source/url.js
index <HASH>..<HASH> 100644
--- a/source/url.js
+++ b/source/url.js
@@ -22,7 +22,7 @@ function normalisePath(pathStr) {
     if (/^.+\/$/.test(normalisedPath)) {
         normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);
     }
-    return decodeURIComponent(normalisedPath);
+    return normalisedPath;
 }
 
 module.exports = {
Fix stat (PROPFILE) request file files with '%' in the filename.

For files with a '%' character in the file name, the parseStat
function would fail at normalising the (non-encoded) filename.