又是乱码,又是乱码,好烦啊,大侠们,请指教..........

bustersword 2011-08-15 12:30:52
 public bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed)
{
try
{
FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
BinaryReader br = new BinaryReader(myFile);
try
{
_Response.AddHeader("Accept-Ranges", "bytes");
_Response.Buffer = false;
long fileLength = myFile.Length;
long startBytes = 0;
int pack = 10240; //10K bytes
//int sleep = 200; //每秒5次 即5*10K bytes每秒
int sleep = (int)(1000 * pack / _speed) + 1;
//int sleep =(int)System.Math.Floor(1000 * pack / _speed) + 1;
if (_Request.Headers["Range"] != null)
{
_Response.StatusCode = 206;
string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });
startBytes = Convert.ToInt64(range[1]);
}
_Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());
if (startBytes != 0)
{
_Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));
}
_Response.AddHeader("Connection", "Keep-Alive");
_Response.ContentType = "application/octet-stream";
_Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8));
br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
int maxCount = (int)((fileLength - startBytes) / pack) + 1;
//int maxCount =(int)System.Math.Floor((fileLength - startBytes) / pack) + 1;
for (int i = 0; i < maxCount; i++)
{
if (_Response.IsClientConnected)
{
_Response.BinaryWrite(br.ReadBytes(pack));

}
else
{
i = maxCount;
}
}
}
catch
{
return false;
}
finally
{
br.Close();
myFile.Close();
_Response.Close();
}
}
catch (Exception ex)
{
return false;
}
return true;
}

文件标题是日文的就乱码,我疯掉了,啥编码,都试了下。郁闷
...全文
263 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bustersword 2011-09-30
  • 打赏
  • 举报
回复
/// <summary>
/// 为字符串中的非英文字符编码
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string ToHexString(string s)
{
char[] chars = s.ToCharArray();
StringBuilder builder = new StringBuilder();
for (int index = 0; index < chars.Length; index++)
{
bool needToEncode = NeedToEncode(chars[index]);
if (needToEncode)
{
string encodedString = ToHexString(chars[index]);
builder.Append(encodedString);
}
else
{
builder.Append(chars[index]);
}
}

return builder.ToString();
}

/// <summary>
///指定 一个字符是否应该被编码
/// </summary>
/// <param name="chr"></param>
/// <returns></returns>
private static bool NeedToEncode(char chr)
{
string reservedChars = "$-_.+!*'(),@=&";

if (chr > 127)
return true;
if (char.IsLetterOrDigit(chr) || reservedChars.IndexOf(chr) >= 0)
return false;

return true;
}

/// <summary>
/// 为非英文字符串编码
/// </summary>
/// <param name="chr"></param>
/// <returns></returns>
private static string ToHexString(char chr)
{
UTF8Encoding utf8 = new UTF8Encoding();
byte[] encodedBytes = utf8.GetBytes(chr.ToString());
StringBuilder builder = new StringBuilder();
for (int index = 0; index < encodedBytes.Length; index++)
{
builder.AppendFormat("%{0}", Convert.ToString(encodedBytes[index], 16));
}
return builder.ToString();
}


来结贴了
一休宗纯 2011-08-15
  • 打赏
  • 举报
回复
你指的文件标题是什么?是文件名吗?
你读取的是什么文件?最好给一个sample
diandian82 2011-08-15
  • 打赏
  • 举报
回复
uup
zjq8888882009 2011-08-15
  • 打赏
  • 举报
回复
mark
bustersword 2011-08-15
  • 打赏
  • 举报
回复
没有呢- -.........要黄了么
一休宗纯 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bustersword 的回复:]

我感觉,路径包含日文是没有问题的
内容包含日文也是没有问题的
问题只是出现在下载的时候文件名乱码
我用火狐5.0下载没问题,IE7就不行
[/Quote]
晕呼中,你现在搞定了没?
bustersword 2011-08-15
  • 打赏
  • 举报
回复
我感觉,路径包含日文是没有问题的
内容包含日文也是没有问题的
问题只是出现在下载的时候文件名乱码
我用火狐5.0下载没问题,IE7就不行
一休宗纯 2011-08-15
  • 打赏
  • 举报
回复
你的文件路径包含日文,你的文件内容又不见得包含日文。

你的意思没有表达清楚。太混乱了!

按道理说,如果读取文件正确,你的文件名编码形式是不是影响到读取的文件内容的
bustersword 2011-08-15
  • 打赏
  • 举报
回复
IE里是UTF-8的....,我选择“自动选择”
还是不行
  • 打赏
  • 举报
回复
文件标题是日文的,那么你的浏览器上默认的编码方式是“自动选择”么?
bustersword 2011-08-15
  • 打赏
  • 举报
回复
我去掉了对文件名的编码,就OK了?
我擦,我画蛇添足了?
不过有些浏览器真变成乱码了。。。。
DB螳夂セゥ譖ク.xls
bustersword 2011-08-15
  • 打赏
  • 举报
回复
如果不存在日文,只是英文名,OK
一休宗纯 2011-08-15
  • 打赏
  • 举报
回复
如果手工将这个日文的路径名改掉,就没有问题吗?
bustersword 2011-08-15
  • 打赏
  • 举报
回复
图片挂了,是文件名乱码
bustersword 2011-08-15
  • 打赏
  • 举报
回复
F:\cloudEntryService\04-コーディング\DataSource\CES\CES.WebUI/Entry/DeliveryRule/zhao/CES20110815120926_zhaomin2/CES改善点.xls
这是路径,
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 【FAST FWR310 无线路由更新程序】是一个专门为FAST FWR310型号无线路由设备设计的固件升级方案,其主要目的在于改善设备的工作表现、纠正已知的系统缺陷或引入全新的操作特性。对无线路由器进行固件更新,实质上是指替换或升级其核心操作系统(即固件),从而使其运行状态得到进一步优化。 在无线路由器的持续使用阶段,用户有时会遭遇若干操作难题,例如网络连接的频繁中断、数据传输速率不高、无线信号覆盖范围有限等情况。针对此类挑战,通过安装新的固件(即刷机包),能够有效应对上述问题,因为新固件或许已经针对这些普遍存在的问题进行了优化处理。不仅如此,固件升级还能开启一些隐藏的功能选项,或者兼容第三方固件,例如OpenWRT,从而让用户能够进行更深入的系统自定义配置及管理。 FWR310 V5.0升级软件20160301是该刷机包的明确版本标识,显示出这是针对FAST FWR310路由器推出的第五代固件,并且发布日期为2016年3月1日。此版本的更新内容可能涵盖以下几个方面: 1. 运行效能的调优:借助于对路由器处理流程与内存分配的改善,能够加快数据交换速率,减少响应时间,从而全面提升网络的工作效能。 2. 安全防护的强化:更新内容中可能融入了对新兴网络安全风险的防御机制,用以保障用户的资料安全。 3. 互操作性的扩展:可能增强了与更多设备及协议的适配能力,比如最新的无线通信标准或设备连接模式。 4. 运行稳定性的提升:修复了可能引发路由器系统崩溃或意外重启的已知故障,延长了设备的稳定运行周期。 5. 新特性集成:或许增添了提升用户体验的功能,例如远程操作控制、家长监管功能、服务质...
内容概要:本文围绕基于混沌系统与DNA编码的彩色图像加密解密体系展开研究,旨在解决传统图像加密算法密钥空间小、抗干扰能力弱等问题。通过结合混沌系统的伪随机性与DNA编码的高维组合特性,构建了多层级、高复杂度的加密框架,实现了对彩色图像RGB三通道的混淆与扩散操作。研究重点包括加密算法的设计与实现、密钥敏感性分析以及抗噪声和抗裁剪性能的系统性测试。实验结果表明,该算法在面对高斯噪声、椒盐噪声及不同面积、位置的图像裁剪攻击时,仍能较好地恢复图像主体结构与核心信息,展现出优良的鲁棒性和实用性。文章还总结了当前研究的不足,并对未来优化方向进行了展望。; 适合人群:具备一定信息安全、图像处理或密码学基础知识的科研人员、研究生及工程技术人员。; 使用场景及目标:①用于高安全性需求下的图像传输与存储场景,如军事通信、医疗影像保护等;②为复合型图像加密技术的研究提供理论支持与实验依据,推动加密算法向高鲁棒性、强抗攻击能力方向发展; 阅读建议:建议读者结合文中提供的理论基础与实验分析,深入理解混沌与DNA编码的融合机制,并可通过复现实验进一步掌握算法细节与性能边界,重点关注抗干扰测试部分以评估其在实际应用中的可靠性。

111,128

社区成员

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

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

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