【问题标题】:Set unicode encoding on all files in folder with c#使用 c# 对文件夹中的所有文件设置 unicode 编码
【发布时间】:2015-10-01 08:29:54
【问题描述】:

我有一个包含一堆 csv 文件的文件夹,我想将它们导入 SQL Server。这适用于 BULK INSERT。

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

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

谢谢

【问题讨论】:

  • 或者只是set the proper codepage
  • 它的 UTF8 - 不要认为 BULK INSERT 支持它
  • BULK INSERT 现在支持代码页 65001 (UTF-8),因为 SqlServer2016

标签: c# unicode


【解决方案1】:

对于所有文件:

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

【讨论】:

    【解决方案2】:

    要扩展@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);
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-08
      • 2017-02-28
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2013-04-17
      相关资源
      最近更新 更多