怎么样保存中文文字到.CVS文件

Donny2016 2016-12-23 02:30:06
这是错误的,我想保存”年“”月“两个字到.csv,可是打开时却是乱码。各位前辈,这个该怎么解决呀



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _7__1csv文件保存
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCsv_Click(object sender, EventArgs e)
{
//Application.StartupPath 是相对路径
string Path = Application.StartupPath + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".csv";
WriteCSV(Path, 2016, 1213);
}
public void WriteCSV(string path, int Year, double Month)
{
if (!File.Exists(path))
{

FileStream fsWrite = new FileStream(path, FileMode.Create, FileAccess.Write);
StreamWriter SW = new StreamWriter(fsWrite);
StringBuilder SB = new StringBuilder();
SB.Append("年").Append(",").Append("月").Append(",");
SB.Append(s1).Append(",").Append(s2).Append(",");

SW.WriteLine(SB);
SW.Flush();
SW.Close();
fsWrite.Close();
}
StreamWriter SW1 = new StreamWriter(path, true, Encoding.Default);
StringBuilder SB1 = new StringBuilder();
SB1.Append(Year).Append(",").Append(Month).Append(",");
SW1.WriteLine(SB1);
SW1.Flush();
SW1.Close();
}
}
}
...全文
241 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
基本上,这意味着你创建文件时没有编码,而写内容时是按照 ToString() 函数的每一个 char 来写入。一般来说这写入的数据其实没有什么问题,只是你“再次”打开文件的方式有问题。
  • 打赏
  • 举报
回复
SW.WriteLine(SB); 这是什么代码?这个是写了什么、你自己要去理解。
yunqing1201 2016-12-26
  • 打赏
  • 举报
回复
2楼正解,乱码主要是编码格式问题,现在一般是UTF8,不行就换一种编码格式!主要是你打开CSV的软件支持什么编码格式了!
  • 打赏
  • 举报
回复
https://www.nuget.org/packages/CsvHelper/3.0.0-beta7 建议用这个类,当然如果你只是写,不需要读,你这样就可以 乱码你可以通过记事本之类的打开你的文件,然后另存为,看存储的格式是什么,然后StreamWriter指定同样的Encoding 不过其实你直接File.WriteAllText一次性写入就可以了,没必要这么多代码
Poopaye 2016-12-23
  • 打赏
  • 举报
回复
new StreamWriter(path, true, Encoding.UTF8);

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧