将.csv(ANSI)转换为.csv(UTF-8)

时间:2018-09-05 10:20:28

标签: c# csv utf-8 ansi

我的PC中有日语环境。因此,我需要一个程序将.csv ANSI转换为.csv UTF-8。我尝试使用此代码:

string st = File.ReadAllText("C:\\Users\\user\\Desktop\\train1.csv");            
System.IO.File.WriteAllText("C:\\Users\\user\\Desktop\\train2.csv",st.ToString(), Encoding.UTF8); 

已成功创建文件train2.csv,但是由于转换,该文本变得不可读。正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

我假设未正确检测到输入文件编码,因此您应该定义它

string st = File.ReadAllText("C:\\Users\\user\\Desktop\\train1.csv", Encoding.Default); //ANSI

Documentation:

  

此方法尝试根据字节顺序标记的存在自动检测文件的编码。可以检测到UTF-8和UTF-32编码格式(大端和小端)。

     

读取时使用ReadAllText(String,Encoding)方法重载   可能包含导入文本的文件,因为无法识别   字符可能无法正确读取。

答案 1 :(得分:0)

StreamReader类可以支持读取具有编码的文件

StreamReader st = new StreamReader("C:\\Users\\user\\Desktop\\train1.csv", 
                                                 System.Text.Encoding.ASCII);

之后,您可以根据StreamWriter

将数据写入文件