summaryrefslogtreecommitdiff
path: root/src/mongo/base
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2016-09-16 14:46:11 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2016-09-16 14:46:11 -0400
commitf0d958c747cfc42dd831eb2f088e963475c0ed54 (patch)
tree39cac193f0b58c9d95c3774fb4964259975e840b /src/mongo/base
parent3174e2d67d077fa8362c3f1200024d69773344fd (diff)
downloadmongo-f0d958c747cfc42dd831eb2f088e963475c0ed54.tar.gz
SERVER-16725 Incorrect character conversion between UTF-8 and UTF-16
Diffstat (limited to 'src/mongo/base')
-rw-r--r--src/mongo/base/validate_locale.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mongo/base/validate_locale.cpp b/src/mongo/base/validate_locale.cpp
index 5a4320c34c5..ffb7190c804 100644
--- a/src/mongo/base/validate_locale.cpp
+++ b/src/mongo/base/validate_locale.cpp
@@ -27,7 +27,9 @@
#include <stdexcept>
-#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/path.hpp>
+#include <codecvt>
+#include <locale>
#include "mongo/base/init.h"
@@ -46,6 +48,13 @@ MONGO_INITIALIZER_GENERAL(ValidateLocale, MONGO_NO_PREREQUISITES, MONGO_DEFAULT_
#endif
);
}
+
+#ifdef _WIN32
+ // Make boost filesystem treat all strings as UTF-8 encoded instead of CP_ACP.
+ std::locale loc(std::locale(""), new std::codecvt_utf8_utf16<wchar_t>);
+ boost::filesystem::path::imbue(loc);
+#endif
+
return Status::OK();
}