diff --git a/src/xercesc/util/FileManagers/WindowsFileMgr.cpp b/src/xercesc/util/FileManagers/WindowsFileMgr.cpp
index c4520e5d7fa04b75696fe58e22b26f5939821c24..d7eefdda798422896222610e0199187f1093f954 100644
--- a/src/xercesc/util/FileManagers/WindowsFileMgr.cpp
+++ b/src/xercesc/util/FileManagers/WindowsFileMgr.cpp
@@ -178,23 +178,11 @@ WindowsFileMgr::open(const XMLCh* fileName, bool toWrite, MemoryManager* const m
 
 
 FileHandle
-WindowsFileMgr::open(const char* path, bool toWrite, MemoryManager* const /*manager*/)
+WindowsFileMgr::open(const char* path, bool toWrite, MemoryManager* const manager)
 {
-    FileHandle retVal = ::CreateFileA
-    (
-        path
-        , toWrite?GENERIC_WRITE:GENERIC_READ
-        , FILE_SHARE_READ
-        , 0
-        , toWrite?OPEN_ALWAYS:OPEN_EXISTING
-        , toWrite?FILE_ATTRIBUTE_NORMAL:FILE_FLAG_SEQUENTIAL_SCAN
-        , 0
-    );
-
-    if (retVal == INVALID_HANDLE_VALUE)
-        return 0;
-
-    return retVal;
+    XMLCh* tmpFileName = XMLString::transcode(path, manager);
+    ArrayJanitor<XMLCh> janText(tmpFileName, manager);
+    return open(tmpFileName, toWrite, manager);
 }