我正在打開一個文本文件並刪除第一行以準備它使用批量插入在數據庫中導入。這裏是我的代碼:streamwriter不能正確保存unicode文件
string tempFile = Path.GetTempFileName();
using (var sr = new StreamReader("F:\\Upload\\File.txt", System.Text.Encoding.UTF8))
{
using (var sw = new StreamWriter(tempFile,true, System.Text.Encoding.UTF8))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.Substring(0, 8) != "Nr. Crt.")
sw.WriteLine(line);
}
}
}
System.IO.File.Delete("F:\\Upload\\File.txt");
System.IO.File.Move(tempFile, "F:\\Upload\\File.txt");
之後,如果我打開生成的文件,Unicode字符被替換爲其他字符。例如,包含非中斷空格(unicode U + 00A0)的字符串:Value
(注意unicode字符)在Value�
中轉換。
我該如何避免這種情況?
編輯:
記事本+ +設置爲「編碼的UTF-8」 這裏是它的外觀圖片:
你在打開什麼文件?你確定它不是讀回它的軟件嗎? – 2012-01-13 14:15:36
@rudi_visser這不是一個顯示錯誤,我試着用記事本,記事本++,也插入數據庫時,它是相同的不正確的值。 – Iulian 2012-01-13 14:18:06
記事本++正在以UTF8模式讀取?對不起,只是試圖確保,因爲我最近使用幾乎完全相同的方法將Unicode字符寫入文件,並且它工作正常。 – 2012-01-13 14:19:51