使用c#在文件夹中的所有文件上设置unicode编码

时间:2015-10-01 08:29:54

标签: c# unicode

我有一堆csv文件的文件夹,我想导入SQL Server。这适用于BULK INSERT。

但是我的编码有问题,在数据库中得到奇怪的章程 - 如果我在记事本中打开csv文件,再次将它们保存为unicode,它就可以完美运行。

他们是否在C#中以编程方式将文件夹中的所有文件转换为unicode?

由于

2 个答案:

答案 0 :(得分:1)

对于所有文件:

        string text = File.ReadAllText("data.txt", Encoding.ASCII);
        File.WriteAllText("data.txt", text, Encoding.Unicode);

答案 1 :(得分:1)

要扩展@ Sandre的答案,您可以按以下方式批量处理此操作:

var di = new DirectoryInfo(@"path\to\csvFolder");
var csvFiles = di.EnumerateFiles("*.csv", SearchOption.TopDirectoryOnly);
var outputFolderDi = new DirectoryInfo(Path.Combine(di.FullName, "outputFolder"));
outputFolderDi.Create();
foreach(var filePath in csvFiles.Select(fi => fi.FullName))
{
    var text = File.ReadAllText(filePath);
    var fileName = Path.GetFileName(filePath);
    var newFilePath = Path.Combine(outputFolderDi.FullName, fileName);
    File.WriteAllText(newFilePath, text, Encoding.Unicode);
}

我不保证此代码是正确的。在部署文件系统之前请仔细检查!