【发布时间】:2018-04-07 21:15:39
【问题描述】:
我正在用这个发出 HTTP POST 请求:
byte[] postBuffer = Encoding.UTF8.GetBytes(postStr);
到目前为止,这似乎工作正常,但我不确定这是否总是有效,因为 Encoding.UTF8 表示 UTF8 WITH BOM。当我使用StreamWriter 创建本地文件时,请始终使用与 new UTF8Encoding(false) 相同的默认编码,以便写入 WITHOUT BOM。所以想知道调用GetBytes()方法是否也是如此。
在这种情况下,上下线没有区别吗?
byte[] postBuffer = new UTF8Encoding().GetBytes(postStr);
我自己测试了几次,但仍然不确定 100%,所以在这里问。
【问题讨论】:
-
这是对您问题的回答吗? stackoverflow.com/a/4414118/2395747
-
不是这个意思。在 Windows 上,BOM 对于文件来说非常重要,它可以让对文件一无所知的应用程序仍然可以正确解释它。网络协议并非如此,因为两端需要就流内容达成一致。对于 http,标头决定了编码。你会依赖,比如说,HttpWebResponse.ContentEncoding
-
@wmioduszewski 谢谢,这个答案也有帮助!
-
@HansPassant 谢谢谢谢! :)
标签: c# encoding byte-order-mark