阻止File.WriteAllText写入双字节顺序标记(BOM)?

时间:2018-05-30 10:08:10

标签: c# character-encoding byte-order-mark

在以下示例中,如果(字符串)文本以BOM开头,则File.writeAllText()将添加另一个,编写两个BOM

我想写两次文字:

  1. 根本没有BOM
  2. 使用单个BOM(如果适用于编码)
  3. 实现这一目标的规范方法是什么?

    HttpWebResponse response = ...
    Byte[] byte = ... // bytes from response possibly including BOM 
    
    var encoding = Encoding.GetEncoding(
                        response.get_CharacterSet(),
                        new EncoderExceptionFallback(),
                        new DecoderExceptionFallback()
                   );
    string text = encoding.GetString(bytes); // will preserve BOM if any
    System.IO.File.WriteAllText(fileName, text, encoding);
    

1 个答案:

答案 0 :(得分:1)

你正在解码然后重新编码文件......这是没用的。

var lvl = document.getElementById("level") var ogg = document.getElementById("object") if (ogg == 0) { lvl.style.display = 'none'; }; 类中,有一个Encoding方法,在GetPreamble()中返回前导码(称为utf- *编码的BOM)。然后我们可以检查收到的byte[]数组是否已经有这个前缀。然后根据这些信息,我们可以编写文件的两个版本,必要时添加或删除前缀。

bytes