Encoding 具有特殊字符的msbuild WriteListFile

Encoding 具有特殊字符的msbuild WriteListFile,encoding,msbuild,Encoding,Msbuild,我正在一个AfterBuild任务中连接一组文件。我通过以下方式读取每个文件: <ItemGroup> <FileContents Include="$([System.IO.File]::ReadAllText(%(InputFiles.Identity)))" /> </ItemGroup> 但是,ñ等特殊字符没有正确写入输出文件。我尝试了几种编码(Unicode、windows-1251、iso-8859-2),但都没有成功。问题在于源文件

我正在一个
AfterBuild
任务中连接一组文件。我通过以下方式读取每个文件:

<ItemGroup>
      <FileContents Include="$([System.IO.File]::ReadAllText(%(InputFiles.Identity)))" />
</ItemGroup>

但是,
ñ
等特殊字符没有正确写入输出文件。我尝试了几种编码(Unicode、windows-1251、iso-8859-2),但都没有成功。

问题在于源文件的编码。他们使用的是
windows-1252
。 如果源文件使用WriteListFile任务中的
utf-8
(代码页65001)和
encoding=“utf-8”
进行编码,则可以正确写入特殊字符

为了改变编码,我找到了两种方法。一种是在VisualStudio中打开文件,并通过file=>Advanced Save Options更改编码

以下
C#script
更改给定目录下每个文件的编码:

new DirectoryInfo("path/to/files/")
    .EnumerateFiles("*", SearchOption.AllDirectories)
    .Select(f => f.FullName)
    .ToList()
    .ForEach(file =>
        File.WriteAllText(
            file,
            File.ReadAllText(file),
            Encoding.UTF8)
    );
new DirectoryInfo("path/to/files/")
    .EnumerateFiles("*", SearchOption.AllDirectories)
    .Select(f => f.FullName)
    .ToList()
    .ForEach(file =>
        File.WriteAllText(
            file,
            File.ReadAllText(file),
            Encoding.UTF8)
    );