我正在连接AfterBuild
任务中的文件集合。我通过以下方式阅读每个文件:
<ItemGroup>
<FileContents Include="$([System.IO.File]::ReadAllText(%(InputFiles.Identity)))" />
</ItemGroup>
然后使用WriteLinesToFile
任务编写它:
<WriteLinesToFile File="@(OutputFile)" Lines="@(FileContents)" Overwrite="true" Encoding="utf-8" />
但是ñ
这样的特殊字符未正确写入输出文件。我尝试了几种编码(Unicode,windows-1251,iso-8859-2)但没有成功。
答案 0 :(得分:0)
问题在于源文件的编码。他们正在使用windows-1252
。
如果源文件使用WriteLinesToFile任务中的utf-8
(代码页65001)和Encoding="utf-8"
进行编码,则会正确写入特殊字符。
为了改变编码,我找到了两种方法。一个是在Visual Studio中打开文件,并通过File =&gt;更改编码高级保存选项。
以下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)
);