从字节加载 UTf8 在 C# 中无法按预期工作



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

var textOut = JsonConvert.SerializeObject(th);
File.WriteAllText(@"C:UsersroohMusicjag_heter_roland.edit2", textOut, Encoding.UTF8);
var bytes = File.ReadAllBytes(@"C:UsersroohMusicjag_heter_roland.edit2");
var str = System.Text.Encoding.UTF8.GetString(bytes);
Console.WriteLine(textOut.Length);
Console.WriteLine(str.Length);

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

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

最新更新