diff --git a/CMakeLists.txt b/CMakeLists.txt
index 03b1dd67d441f62a87bf6652f948b8e3db5573b4..c2b377df1d37a568531b1bc45840397f4d744bb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -166,6 +166,11 @@ ELSE(KWSYS_LFS_DISABLE)
   SET(KWSYS_LFS_REQUESTED 1)
 ENDIF(KWSYS_LFS_DISABLE)
 
+# Specify default 8 bit encoding for Windows
+IF(NOT KWSYS_ENCODING_DEFAULT_CODEPAGE)
+  SET(KWSYS_ENCODING_DEFAULT_CODEPAGE CP_ACP)
+ENDIF(NOT KWSYS_ENCODING_DEFAULT_CODEPAGE)
+
 # Enable testing if building standalone.
 IF(KWSYS_STANDALONE)
   INCLUDE(Dart)
@@ -1074,6 +1079,12 @@ IF(KWSYS_USE_String)
     COMPILE_FLAGS "-DKWSYS_STRING_C")
 ENDIF(KWSYS_USE_String)
 
+IF(KWSYS_USE_Encoding)
+  # Set default 8 bit encoding in "EndcodingC.c".
+  SET_PROPERTY(SOURCE EncodingC.c APPEND PROPERTY COMPILE_DEFINITIONS
+    KWSYS_ENCODING_DEFAULT_CODEPAGE=${KWSYS_ENCODING_DEFAULT_CODEPAGE})
+ENDIF(KWSYS_USE_Encoding)
+
 #-----------------------------------------------------------------------------
 # Setup testing if not being built as part of another project.
 IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
diff --git a/EncodingC.c b/EncodingC.c
index feff969c6a358064009a012751b0c10b0e3c674a..a36eeccbf756ae2a6bb03216a07a05d48c697057 100644
--- a/EncodingC.c
+++ b/EncodingC.c
@@ -31,7 +31,7 @@ size_t kwsysEncoding_mbstowcs(wchar_t* dest, const char* str, size_t n)
     return (size_t)-1;
     }
 #ifdef _WIN32
-  return MultiByteToWideChar(CP_UTF8, 0,
+  return MultiByteToWideChar(KWSYS_ENCODING_DEFAULT_CODEPAGE, 0,
                              str, -1, dest, (int)n) - 1;
 #else
   return mbstowcs(dest, str, n);
@@ -58,7 +58,7 @@ size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* str, size_t n)
     return (size_t)-1;
     }
 #ifdef _WIN32
-  return WideCharToMultiByte(CP_UTF8, 0, str, -1,
+  return WideCharToMultiByte(KWSYS_ENCODING_DEFAULT_CODEPAGE, 0, str, -1,
                              dest, (int)n, NULL, NULL) - 1;
 #else
   return wcstombs(dest, str, n);