使用UTF-16编码保存文本文件而不在C#中使用字节顺序标记(BOM)?

时间:2013-06-26 17:37:04

标签: c# tortoisesvn utf-16 byte-order-mark endianness


我已经阅读了类似的帖子,他们没有回答我的问题。

我发现类似的帖子是: how to pass parameters to tortoiseproc.exe via file?


但问题尚未解决,并且在没有BOM的情况下使用UTF-16编码创建了文件。

我正在尝试使用tortoisesvn命令自动为我的项目提交

TortoiseProc.exe /command:commit /pathfile:"D:\p3.tmp" /logmsg:"test log message" /deletepathfile

其中“D:\ p3.tmp”文件包含必须提交的文件列表。

此文件包含没有BOM的UTF-16编码。

我用来创建文件的

C#代码

string line = @"D:\SourceCode\ProductProvider.cs";           
    using (var s = File.Create("D:\\p3.tmp"))
    {
     using (var sw = new StreamWriter(s, new UTF32Encoding()))
     {
         sw.WriteLine(line);
     }
    }

1 个答案:

答案 0 :(得分:5)

您需要使用constructor的非默认UnicodeEncoding class来创建没有BOM的UTF16编码;

using (var sw = new StreamWriter(s, new UnicodeEncoding(false, false)))
{
    sw.WriteLine(line);
}

第一个false设置小端编码,您可以将其设置为大端的真实。第二个false禁用BOM。