• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net解决下载文件–中文名乱码问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
最近的项目中需要导出Excel 表格,Excel名称是中文的,在IE中下载老是出现中文名称乱码问题,设置 Respone Encoding 无果,最后找到解决方案如下:


 

    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>
            /// Determines if the character needs to be encoded.
            /// </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>
            /// Encodes a non-US-ASCII character.
            /// </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();
           }

 

 

使用时,只需调用:
string downloadName = ToHexString(“中文名称”);
 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PersistentFormsauthcookiesinASP.NET2.0发布时间:2022-07-10
下一篇:
asp.net利用存储过程和div+css实现分页(类似于博客园首页分页)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap