Encoding.UTF8.GetBytes() 是否创建 BOM?

Does Encoding.UTF8.GetBytes() create a BOM?

我正在使用此发出 HTTP POST 请求:

byte[] postBuffer = Encoding.UTF8.GetBytes(postStr);

到目前为止,这似乎工作正常,但我不确定这是否会一直有效,因为 Encoding.UTF8 表示 UTF8 WITH BOM。当我使用 StreamWriter 创建本地文件时,始终使用与 new UTF8Encoding(false) 相同的默认编码,以便在没有 BOM 的情况下写入。所以想知道调用 GetBytes() 方法是否也是如此。

这样的话,上下行没有区别吗?

byte[] postBuffer = new UTF8Encoding().GetBytes(postStr);

我自己测试了几次,还是不能100%确定,所以来这里问一下。

GetBytes 方法从不returns 以 BOM 开头的字节流。 可以使用 GetPreAmble 方法检索 BOM,当编码器实例化为 false 时 returns 什么都没有。

有关详细信息,请参阅 Microsoft Documentation 上的详尽备注部分。