当我加载为字节,然后将其转换为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作为第一个字符。