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)
);