From 74dd5d2a1e9fde7a6e915ed0aab22cc3a995d004 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Thu, 4 Jun 2020 23:27:02 +0300 Subject: [PATCH] Serialize text kv without utf8 bom --- .../KVSerializerUtf8NoBomTestCase.cs | 35 +++++++++++++++++++ .../Serialization/KV1TextSerializer.cs | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 ValveKeyValue/ValveKeyValue.Test/KVSerializerUtf8NoBomTestCase.cs diff --git a/ValveKeyValue/ValveKeyValue.Test/KVSerializerUtf8NoBomTestCase.cs b/ValveKeyValue/ValveKeyValue.Test/KVSerializerUtf8NoBomTestCase.cs new file mode 100644 index 00000000..0277b245 --- /dev/null +++ b/ValveKeyValue/ValveKeyValue.Test/KVSerializerUtf8NoBomTestCase.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using NUnit.Framework; + +namespace ValveKeyValue.Test +{ + class KVSerializerUtf8NoBomTestCase + { + [TestCase] + public void TextSerializerDoesNotProduceUtf8Preamble() + { + var dataObject = new DataObject + { + Name = "First" + }; + + byte[] output; + using (var ms = new MemoryStream()) + { + KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Serialize(ms, dataObject, "test"); + + ms.Seek(0, SeekOrigin.Begin); + + output = ms.ToArray(); + } + + Assert.AreEqual((byte)'"', output[0]); + } + + class DataObject + { + public string Name { get; set; } + } + } +} diff --git a/ValveKeyValue/ValveKeyValue/Serialization/KV1TextSerializer.cs b/ValveKeyValue/ValveKeyValue/Serialization/KV1TextSerializer.cs index ee150c54..7e0753ba 100644 --- a/ValveKeyValue/ValveKeyValue/Serialization/KV1TextSerializer.cs +++ b/ValveKeyValue/ValveKeyValue/Serialization/KV1TextSerializer.cs @@ -13,7 +13,7 @@ public KV1TextSerializer(Stream stream, KVSerializerOptions options) Require.NotNull(options, nameof(options)); this.options = options; - writer = new StreamWriter(stream, Encoding.UTF8, bufferSize: 1024, leaveOpen: true); + writer = new StreamWriter(stream, new UTF8Encoding(), bufferSize: 1024, leaveOpen: true); writer.NewLine = "\n"; }