【发布时间】:2012-02-09 17:35:30
【问题描述】:
我正在打开一个文本文件并删除第一行以准备使用批量插入将其导入数据库。这是我的代码:
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 char)被转换为 Value�。
我怎样才能避免这种情况?
编辑:
Notepad++ 设置为“以 UTF-8 编码” 这是它的外观图片:
【问题讨论】:
-
你用什么打开文件?你确定不是软件在回读吗?
-
@rudi_visser 这不是显示错误,我用记事本、notepad++ 试过,在插入数据库时也是同样的错误值。
-
并且 Notepad++ 正在以 UTF8 模式读取?抱歉,只是想确定一下,因为我最近使用几乎完全相同的方法将 Unicode 字符写入文件,并且效果很好。
-
lulian 记事本、notepad++ 等仍然需要知道格式是什么...您尝试过包含 BOM 吗?
-
是的,notepad++ 不是通灵的,这正是我在下面 Marc 的回答中所期望的。
标签: c# unicode streamwriter