从资源读取文件时指定编码

Red*_*ood 7 .net c#

我有一个 UTF8 文件,我已将其添加到 Resources.resx 中的项目中,名为 Template.txt

如果我像这样正常读取文件:

string template = File.ReadAllText(@"filepath\Template.txt", Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

一切正常。

但是,如果我这样读:

string template = Properties.Resources.Template
Run Code Online (Sandbox Code Playgroud)

它充满了日文字符,因此编码错误。

byte[] bytes = Encoding.Default.GetBytes(Properties.Resources.Template);
string template = Encoding.UTF8.GetString(bytes);
Run Code Online (Sandbox Code Playgroud)

这也仍然给出了日语字符。

有谁知道原因?如果我只是在 Visual Studio 中双击 Template.txt 文件,我也可以正常读取它。

Red*_*ood 5

正如 Hans Passant 在评论中所说,对文件进行编码以使其包含 UTF-8 BOM(字节顺序标记)解决了该问题。