c#将.csv文件从Windows UTF-8转换为w1252

时间:2017-12-29 09:31:15

标签: c# csv utf-8

我需要将.csv文件从UTF-8转换为W1252(西欧)。

我已尝试过MSDN页面中的示例和以下代码,但没有成功

        Encoding utf8 = Encoding.UTF8;
        //Encoding utf8 = new UTF8Encoding();
        Encoding win1252 = Encoding.GetEncoding(1252);


        string src = today.ToString("dd-MM-yyyy") + "-ups.csv";
        string source = File.ReadAllText(src);


        byte[] input = source.ToUTF8ByteArray();
        byte[] output = Encoding.Convert(utf8, win1252, input);

        File.WriteAllText(src + "w1252", win1252.GetString(output));

使用扩展方法

   public static class StringHelper
    {
        public static byte[] ToUTF8ByteArray(this string str)
        {
            Encoding encoding = new UTF8Encoding();
            return encoding.GetBytes(str);
        }
    }

在此之后,当打开为W1252时,文件仍然会读取损坏的字符,并且如果以UTF-8打开则完美地工作,确认它不好。

谢谢!

1 个答案:

答案 0 :(得分:2)

为什么不读取初始编码(Encoding.UTF8),并写入目标1(Encoding.GetEncoding(1252)):

string fileName = @"C:\MyFile.csv";

File.WriteAllText(fileName, File
  .ReadAllText(fileName, Encoding.UTF8), Encoding.GetEncoding(1252));