【发布时间】:2011-07-13 01:42:40
【问题描述】:
我遇到了 StreamWriter 和字节顺序标记的问题。该文档似乎声明 Encoding.UTF8 编码启用了字节顺序标记,但是在写入文件时,有些有标记,而另一些则没有。
我正在通过以下方式创建流编写器:
this.Writer = new StreamWriter(this.Stream, System.Text.Encoding.UTF8);
任何关于可能发生的事情的想法都将不胜感激。
【问题讨论】:
-
请注意,虽然技术上允许在 UTF-8 中使用,但 Unicode 既不要求也不推荐 BOM(参见 ref)。一方面,它是无用的(与 UTF-16 不同)——UTF-8 字节顺序是由标准指定的。另一方面,它可能会破坏文本处理。例如,如果在 XML 序言之前有任何字符,许多 XML 解析器会阻塞。
-
您确定要指定 UTF8 吗?因为如果你不指定它,它仍然会写一个UTF8,但是没有BOM
-
来自 Unicode 标准 5.0:Unicode 标准还指定使用初始字节顺序标记 (BOM) 来明确区分某些 Unicode 编码方案中的大端或小端数据.
-
您解决了这个问题吗?如果是这样,请标记正确答案或发布您自己的答案以帮助他人。
标签: c# file-encodings