diff --git a/toml/serializer.hpp b/toml/serializer.hpp index 592c33f..23fb89a 100644 --- a/toml/serializer.hpp +++ b/toml/serializer.hpp @@ -63,7 +63,19 @@ format_key(const std::basic_string& k) case '\f': {serialized += "\\f"; break;} case '\n': {serialized += "\\n"; break;} case '\r': {serialized += "\\r"; break;} - default : {serialized += c; break;} + default: { + if (c >= 0x00 && c < 0x20) + { + std::array buf; + std::snprintf(buf.data(), buf.size(), "\\u00%02x", static_cast(c)); + serialized += buf.data(); + } + else + { + serialized += c; + } + break; + } } } serialized += "\"";