我正在打开一个文本文件并删除第一行以准备它使用批量插入在数据库中导入。这里是我的代码: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