文件乱码问题

wujevons 2003-08-27 04:19:16
SQl server使用IMAGE类型存储文件
上传同时将文件名保存在varchar类型字段中

下载时输出代码:
string sql;
sql="SELECT filedata,filename,filesize,filetype FROM filedata where id = '" + id + "'";
System.Data.OleDb.OleDbConnection Con = new System.Data.OleDb.OleDbConnection(conStr);
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql,Con);
System.Data.OleDb.OleDbDataAdapter apt = new System.Data.OleDb.OleDbDataAdapter(sql,Con);

DataTable dtImage = new DataTable();

apt.Fill(dtImage);
if(dtImage.Rows.Count==0)
return;
image = dtImage.Rows[0][0];
string FileName = dtImage.Rows[0][1].ToString();
string FileType = dtImage.Rows[0][3].ToString();

if (FileType == null || FileType == "")
FileType = "application/x-msdownload";

if(image==DBNull.Value)
return;
Response.ContentType = FileType;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
byte[] bs=(byte[])image;
this.Response.BinaryWrite(bs);

结果保存时我输出的FileName是乱码,就是提示保存到哪里的时候,中文文件名乱码
英文数字正常,肯定是哪里需要转一下编码

库中数据正常显示中文
...全文
24 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cuike519 2003-08-27
同意楼上的!是要编码以后才能正确的显示汉字!以前碰见这样的问题就是用这个方法解决的!
  • 打赏
  • 举报
回复
acewang 2003-08-27
用这句话显示中文:
Response.AppendHeader("Content-Disposition","attachment;
filename="+HttpUtility.UrlEncode(sFileName,System.Text.Encoding.UTF8))
  • 打赏
  • 举报
回复
wujevons 2003-08-27
UP
  • 打赏
  • 举报
回复
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
帖子事件
创建了帖子
2003-08-27 04:19
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。