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

问题描述 投票:1回答:1

我需要将.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打开则完美地工作,确认它不好。

谢谢!

c# csv utf-8
1个回答
2
投票

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

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

File.WriteAllText(fileName, File
  .ReadAllText(fileName, Encoding.UTF8), Encoding.GetEncoding(1252));
© www.soinside.com 2019 - 2024. All rights reserved.