diff --git a/contrib/src/restbed/rules.mak b/contrib/src/restbed/rules.mak
index 89c6b0d0a6e57e30fe25e4a249649ba34d404017..263f84aa96ab1eb35b6d012f4ef8ca85f79d0f62 100644
--- a/contrib/src/restbed/rules.mak
+++ b/contrib/src/restbed/rules.mak
@@ -45,6 +45,7 @@ restbed: restbed-$(RESTBED_VERSION).tar.gz
 	$(APPLY) $(SRC)/restbed/strand.patch
 	$(APPLY) $(SRC)/restbed/uri_cpp.patch
 	$(APPLY) $(SRC)/restbed/dns-resolution-error.patch
+	$(APPLY) $(SRC)/restbed/string.patch
 	$(MOVE)
 
 .restbed: restbed toolchain.cmake
diff --git a/contrib/src/restbed/string.patch b/contrib/src/restbed/string.patch
new file mode 100644
index 0000000000000000000000000000000000000000..53b2eb21a768c9170e3d0e833ce696dd949cf6ed
--- /dev/null
+++ b/contrib/src/restbed/string.patch
@@ -0,0 +1,25 @@
+--- a/source/corvusoft/restbed/string.cpp	2016-09-14 20:58:54.000000000 -0400
++++ b/source/corvusoft/restbed/string.cpp	2017-06-27 10:17:55.000000000 -0400
+@@ -7,6 +7,7 @@
+ #include <memory>
+ #include <ciso646>
+ #include <algorithm>
++#include <cstdlib>
+ 
+ //Project Includes
+ #include "corvusoft/restbed/string.hpp"
+@@ -161,8 +162,14 @@
+     string::size_type String::format( string& output, const string::size_type length, const char* format, va_list arguments )
+     {
+         unique_ptr< char[ ] > formatted( new char[ length + 1 ] );
++
++        char* saved_locale = strdup(setlocale(LC_NUMERIC, NULL));
++        setlocale(LC_NUMERIC, "C");
+         
+         int required_length = vsnprintf( formatted.get( ), length + 1, format, arguments );
++
++        setlocale(LC_NUMERIC, saved_locale);
++        free(saved_locale);
+         
+         if ( required_length == -1 )
+         {