如何检测 .NET StreamReader 是否在底层流上发现了 UTF8 BOM?
我得到一个 FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.ReadWrite) ,然后得到一个 StreamReader(stream,true) 。
有没有办法检查流是否以 UTF8 BOM 开头? 我注意到没有 BOM 的文件被 StreamReader 读取为 UTF8。
我怎样才能区分它们?
I get a FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)
and then a StreamReader(stream,true)
.
Is there a way I can check if the stream started with a UTF8 BOM?
I am noticing that files without the BOM are read as UTF8 by the StreamReader.
How can I tell them apart?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 API 比对字节进行硬编码更好
Rather than hardcoding the bytes, it is prettier to use the API
您可以通过使用无 BOM 的 UTF8 编码对其进行初始化并检查
CurrentEncoding
在第一次读取后是否发生变化来检测StreamReader
是否遇到了 BOM。You can detect whether the
StreamReader
encountered a BOM by initializing it with a BOM-less UTF8 encoding and checking to see ifCurrentEncoding
changes after the first read.这有帮助吗?您检查文件的前三个字节:
Does this help? You check the first three bytes of the file: