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);