如何将数据导成ANSI编码格式的文本文件

redman0607 2007-10-25 04:12:00
系统:win2000server
环境:VS2005 C#.net
//将dt导出到文本中.-- DataTable To/2 Text 用','隔开
protected void ExportToText(System.Data.DataTable dtData)
{
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回Text文件
System.IO.StringWriter strWriter = null;

if (dtData != null)
{
// 设置编码和附件格式
curContext.Response.ContentType = "text/plain";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;

//curContext.Response.Charset = "UTF-8";
//curContext.Response.Charset = "us-ascii";
curContext.Response.Charset = "Auto";
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMdd") + "FreePolicy.txt");
// 导出文本文件
strWriter = new System.IO.StringWriter();

StringBuilder colSb = new StringBuilder();
for (int k = 0; k < dtData.Columns.Count; k++)
{
//colSb.AppendFormat("{0},", dtData.Columns[k].ToString());//表的列名(字段名)
colSb.AppendFormat("{0}\t", dtData.Columns[k].ToString());//表的列名(字段名)
}
colSb.AppendFormat("{0}\t", "");//增加一个tab
string col = colSb.ToString();
strWriter.WriteLine(col.ToString());

StringBuilder rowInfoSb = new StringBuilder();
string rowInfo = null;
for (int i = 0; i < dtData.Rows.Count; i++)
{
for (int k = 0; k < dtData.Columns.Count; k++)
{
//rowInfoSb.AppendFormat("'{0}',", dtData.Rows[i][k].ToString());
rowInfoSb.AppendFormat("{0}\t", dtData.Rows[i][k].ToString());
}
rowInfoSb.AppendFormat("{0}\t", "");//增加一个tab
rowInfo = rowInfoSb.ToString() ;
strWriter.WriteLine(rowInfo.ToString());
rowInfoSb.Remove(0, rowInfoSb.Length);
}

strWriter.Close();
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}

这样导出的为UTF-8 的格式,如何导成ANSI的格式.请高人指点,多谢多谢.
...全文
677 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Whislly 2007-10-26
  • 打赏
  • 举报
回复
curContext.Response.Charset = "GB2312";
curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
估计这两个都改才行
Whislly 2007-10-26
  • 打赏
  • 举报
回复
把curContext.Response.Charset = "Auto"; 改成:
curContext.Response.Charset = "GB2312";
redman0607 2007-10-26
  • 打赏
  • 举报
回复
楼上的代码加上去还是不行.????
王集鹄 2007-10-26
  • 打赏
  • 举报
回复
估计是这样:
curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
redman0607 2007-10-26
  • 打赏
  • 举报
回复
如果按楼上的说法,汉字导出后就变成“?”,请问还需要做什么调整。
Whislly 2007-10-25
  • 打赏
  • 举报
回复
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
把这句改成:
curContext.Response.ContentEncoding = System.Text.Encoding.ASCII;
看看。

110,536

社区成员

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

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

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