我需要将.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打开则完美地工作,确认它不好。
谢谢!
答案 0 :(得分:2)
为什么不读取初始编码(Encoding.UTF8
),并写入目标1(Encoding.GetEncoding(1252)
):
string fileName = @"C:\MyFile.csv";
File.WriteAllText(fileName, File
.ReadAllText(fileName, Encoding.UTF8), Encoding.GetEncoding(1252));