我正在尝试使用 YamlDotNet 库来序列化一个可能包含以回车开头的字符串的结构。当我序列化数据时,我得到了一个包含空字符的奇怪输出。
using (var writer = new StringWriter())
{
var yaml = new YamlStream();
var rootYamlNode = new YamlMappingNode();
yaml.Add(new YamlDocument(rootYamlNode));
rootYamlNode.Add("foo", "\nbar");
yaml.Save(writer, false);
Console.Write(writer.ToString());
Console.Write(string.Join(", ", Encoding.UTF8.GetBytes(writer.ToString()).Select(b => string.Format("{0:X2}", b)).ToArray()));
}
呈现为 :
foo: >2?-
bar
...
66, 6F, 6F, 3A, 20, 3E, 32, 00, 2D, 0D, 0A, 0D, 0A, 20, 20, 62, 61, 72, 0D, 0A, 2E, 2E, 2E, 0D, 0A
蜜蜂?
是一个空字符。(十六进制序列是编码为 UTF-8 的输出中的字节值)
有关信息,我正在使用带有框架 3.5 的 Visual Studio 2008(以及迄今为止最新的 yamldotnet 版本 3.8.0,但带有框架 4.5 的 dotnetfiddle.net 显示与 yamldotnet 3.8.0 相同的问题)
它看起来像一个错误,但我可能滥用了 api。
我的代码中某处有错误吗?
如果它是 yamldotnet 中的错误,有没有办法通过让 yamldotnet 使用
"\nbar"
语法而不是>- ...
语法来格式化 yaml 来解决?
作为参考,这里是 dotnetfiddle.net 的链接,显示了问题:https ://dotnetfiddle.net/jqVcL3