2016-03-05 75 views
0

我的代碼是:追加到txt文件中產生奇怪的字符

File.AppendAllText(
     @"C: \Users\aalig\Downloads\stok.txt", 
     "text content" + Environment.NewLine, 
     Encoding.UTF8); 

但之後寫作的文本文件看起來是 - 原文先行正確(預期),但隨後的象形文字,而不是「文字內容」:

Image of invalid text

+0

是這個問題不完整?你會得到什麼錯誤?請包含更多詳細信息以幫助他人幫助您。 – xmorera

+0

我試過編寫「文本內容」,但它看起來像文本文件中的「整璸撓湯整瑮਍」@xmorera – YS1965

+0

就像測試一樣,您是否可以先清除所有文件內容? – xmorera

回答

1

源文件具有不同的編碼(未UTF8作爲代碼指定)。當AppendAllText按要求添加UTF8文本時,它會附加UTF8編碼的字符串。當使用另一種編碼(即UTF16)讀取這種字節序列時,它將被解釋爲不同的Unicode字符集。

修正:當附加文本(如果知道的話)

  • 閱讀所有文字第一,不是重新寫文件與您所選擇的編碼文件的

    1. 使用的編碼。

    樣品產生無效結果:

    string path = @"e:\temp\MyTest.txt"; 
    File.WriteAllText(path, "Hello and Welcome" + Environment.NewLine, Encoding.Unicode); 
    // Note that AppendAllText uses different encoding than WriteAllText 
    // To correct - specify the same Encoding.Unicode (option 1) 
    File.AppendAllText(path, "text content" + Environment.NewLine, Encoding.UTF8); 
    
    Console.WriteLine(File.ReadAllText(path)); 
    

    結果

    Hello and Welcome 
    整璸撓湯整瑮਍ 
    

    樣品讀取整個文件並添加文本(選項2)

    File.WriteAllText(path, 
        File.ReadAllText(path) 
        + Environment.NewLine 
        + newContentToAdd);