我在c#中做了一些相当简单的事情,将一个字符串列表写入文本文件。我的写子是:
public static bool TextToFile(string fileName, List<string> inString) {
if (!Directory.Exists(Path.GetDirectoryName(fileName)))
Directory.CreateDirectory(Path.GetDirectoryName(fileName));
try {
if (File.Exists(fileName))
File.Delete(fileName);
const int BufferSize = 65536; // 64 Kilobytes
using (StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8, BufferSize)) {
if (inString.Count > 0) {
foreach (string str in inString) {
sw.WriteLine(str);
}
}
else
sw.WriteLine("");
}
return true;
}
catch {
return false;
}
}
虽然我在第一行的开头得到了额外的东西。 它没有在常规文本编辑器中显示,但是当我在ultraedit中打开并进入十六进制模式时,我看到了:
我阅读文本文件的程序会看到这些字符,并将其混淆。 我的字符串列表非常干净。 我有时写100 MB的文本文件,所以我将缓冲区设置为64k,但我尝试将其保留为默认值,但结果相同。 我在win7 64位,使用VS 2013。
答案 0 :(得分:0)
我遇到了这个确切的问题,并且(由于对此问题的评论)将这些字符标识为Byte Order Mark 然后,我可以使用以下代码更改编码以排除BOM:
PYTHONPATH