解决方法:
--方法一
public static string GetUTF8String(byte[] buffer) { if (buffer == null) return null; if (buffer.Length <= 3) { return Encoding.UTF8.GetString(buffer); } byte[] bomBuffer = new byte[] { 0xef, 0xbb, 0xbf }; if (buffer[0] == bomBuffer[0] && buffer[1] == bomBuffer[1] && buffer[2] == bomBuffer[2]) { return new UTF8Encoding(false).GetString(buffer, 3, buffer.Length - 3); } return Encoding.UTF8.GetString(buffer); } var utf8WithoutBom = new System.Text.UTF8Encoding(false); var sink = new StreamWriter("Foobar.txt", false, utf8WithoutBom) --方法二 public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext) { var serializer = JsonSerializer.Create(jsonSerializerSettings); var utf8OutBOM=new UTF8Encoding(false);//解决方法 return Task.Factory.StartNew(() => { using (var streamWriter = new StreamWriter(writeStream, utf8OutBOM)) { using (var jsonTextWriter = new JsonTextWriter(streamWriter)) { serializer.Serialize(jsonTextWriter, value); } } }); }