【问题标题】:loading UTf8 from bytes doesn't work as expected in C#从字节加载 UTf8 在 C# 中无法按预期工作
【发布时间】:2020-09-19 13:38:00
【问题描述】:

当我加载为字节,然后将其转换为 utf8 时,我得到 438 的长度,如果我直接将它加载为 utf8,或者只是写 textOut.lengt,我得到 437 个字符。 字符串在调试中看起来是一样的,但它说的第一个字符不同。有谁知道这是什么原因

var textOut = JsonConvert.SerializeObject(th);

File.WriteAllText(@"C:\Users\rooh\Music\jag_heter_roland.edit2", textOut, Encoding.UTF8);

var bytes = File.ReadAllBytes(@"C:\Users\rooh\Music\jag_heter_roland.edit2");
var str = System.Text.Encoding.UTF8.GetString(bytes);
Console.WriteLine(textOut.Length);
Console.WriteLine(str.Length);

【问题讨论】:

标签: c# formatting


【解决方案1】:

大概前 3 个字节是 0xEFBBBF - UTF-8 BOM

当使用ReadAllText时,我怀疑它会检测到并删除它;如果您手动进行解码 (GetString),它会将其保存为代码点 U+FEFF 作为第一个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 2018-01-17
    • 2019-02-19
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多