msbuild writelinestofile 具有特殊字符
msbuild writelinestofile with special characters
我正在 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)但没有成功。
问题出在源文件的编码上。他们正在使用 windows-1252
。
如果源文件在 WriteLinesToFile 任务中使用 utf-8
(代码页 65001)和 Encoding="utf-8"
进行编码,则可以正确写入特殊字符。
为了更改编码,我找到了两种方法。一种是在 Visual Studio 中打开文件并通过文件 => 高级保存选项更改编码。
以下 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)
);
我正在 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)但没有成功。
问题出在源文件的编码上。他们正在使用 windows-1252
。
如果源文件在 WriteLinesToFile 任务中使用 utf-8
(代码页 65001)和 Encoding="utf-8"
进行编码,则可以正确写入特殊字符。
为了更改编码,我找到了两种方法。一种是在 Visual Studio 中打开文件并通过文件 => 高级保存选项更改编码。
以下 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)
);