diff --git a/src/ringdht/namedirectory.cpp b/src/ringdht/namedirectory.cpp
index f40b2539da2adff108cc9f06f95bf3fcfa0bc23d..2541d7835ca320bd0a026aeb2e8f7b0ff3c02ea3 100644
--- a/src/ringdht/namedirectory.cpp
+++ b/src/ringdht/namedirectory.cpp
@@ -319,7 +319,7 @@ void
 NameDirectory::saveCache()
 {
     fileutils::recursive_mkdir(fileutils::get_cache_dir()+DIR_SEPARATOR_STR+"namecache");
-    std::ofstream file(cachePath_, std::ios::trunc);
+    std::ofstream file(cachePath_, std::ios::trunc | std::ios::binary);
     msgpack::pack(file, nameCache_);
     RING_DBG("Saved %lu name-address mappings", (long unsigned)nameCache_.size());
 }
diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp
index 1d66c11209b9d476ea1c4417d4de46f3d7cec004..d8c98156d8662a13729a90980c36223ba6569914 100644
--- a/src/ringdht/ringaccount.cpp
+++ b/src/ringdht/ringaccount.cpp
@@ -2578,7 +2578,7 @@ template<typename ID=dht::Value::Id>
 void
 saveIdList(const std::string& path, const std::set<ID>& ids)
 {
-    std::ofstream file(path, std::ios::trunc);
+    std::ofstream file(path, std::ios::trunc | std::ios::binary);
     if (!file.is_open()) {
         RING_ERR("Could not save to %s", path.c_str());
         return;
@@ -2645,7 +2645,7 @@ RingAccount::loadKnownDevices()
 void
 RingAccount::saveKnownDevices() const
 {
-    std::ofstream file(idPath_+DIR_SEPARATOR_STR "knownDevicesNames", std::ios::trunc);
+    std::ofstream file(idPath_+DIR_SEPARATOR_STR "knownDevicesNames", std::ios::trunc | std::ios::binary);
 
     std::map<dht::InfoHash, std::pair<std::string, uint64_t>> devices;
     for (const auto& id : knownDevices_)
@@ -2674,7 +2674,7 @@ RingAccount::saveNodes(const std::vector<dht::NodeExport>& nodes) const
     fileutils::check_dir(cachePath_.c_str());
     std::string nodesPath = cachePath_+DIR_SEPARATOR_STR "nodes";
     {
-        std::ofstream file(nodesPath, std::ios::trunc);
+        std::ofstream file(nodesPath, std::ios::trunc | std::ios::binary);
         if (!file.is_open()) {
             RING_ERR("Could not save nodes to %s", nodesPath.c_str());
             return;
@@ -2920,7 +2920,7 @@ RingAccount::loadContacts()
 void
 RingAccount::saveContacts() const
 {
-    std::ofstream file(idPath_+DIR_SEPARATOR_STR "contacts", std::ios::trunc);
+    std::ofstream file(idPath_+DIR_SEPARATOR_STR "contacts", std::ios::trunc | std::ios::binary);
     msgpack::pack(file, contacts_);
 }
 
@@ -3003,7 +3003,7 @@ RingAccount::sendTrustRequestConfirm(const dht::InfoHash& to)
 void
 RingAccount::saveTrustRequests() const
 {
-    std::ofstream file(idPath_+DIR_SEPARATOR_STR "incomingTrustRequests", std::ios::trunc);
+    std::ofstream file(idPath_+DIR_SEPARATOR_STR "incomingTrustRequests", std::ios::trunc | std::ios::binary);
     msgpack::pack(file, trustRequests_);
 }