3
讀取文件時,指定編碼我有一個UTF8文件,我已經加入到我在Resources.resx的項目,叫做Template.txt從資源
如果我讀的文件通常是這樣的:
string template = File.ReadAllText(@"filepath\Template.txt", Encoding.UTF8);
一切工作正常。
但是,如果我的理解是這樣的:
string template = Properties.Resources.Template
它是充滿了日文字符,因而具有了錯誤的編碼。
byte[] bytes = Encoding.Default.GetBytes(Properties.Resources.Template);
string template = Encoding.UTF8.GetString(bytes);
這還是給出了日文字符。
有誰知道原因?如果我只是雙擊Visual Studio中的Template.txt文件,我也可以正常讀取它。
您可能沒有在Resources.resx包含中指定UTF8,因此在將其轉換爲資源時出現亂碼。因此,無法將資源恢復爲無法使用。瞭解如何在Resources.resx中指定UTF8。 –
如果文本出現錯誤,則表示您沒有將其存儲爲Unicode。只要確保資源實際上存儲爲Unicode –
當您將文本文件作爲資源嵌入時,資源管理器會努力將文件嵌入爲文本,以便編碼不起作用。這就是爲什麼你可以從Template屬性獲得一個字符串。但是,正如你所看到的,它無法弄清楚文本文件是否包含utf8。所以它猜對了,並且使用了系統默認的代碼頁,如果文本文件包含非ASCII字符,就會變成亂碼。使用文本編輯器打開文件,甚至記事本都可以做到,將其保存爲utf8,以便包含BOM。 –