zoukankan      html  css  js  c++  java
  • asp.net 解决下载文件–中文名乱码问题

    最近的项目中需要导出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(“中文名称”);
     

  • 相关阅读:
    Unable To Open Database After ASM Upgrade From Release 11.1 To Release 11.2
    11g Understanding Automatic Diagnostic Repository.
    How to perform Rolling UpgradeDowngrade in 11g ASM
    Oracle 11.2.0.2 Patch 说明
    Pattern Matching Metacharacters For asm_diskstring
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    Upgrading ASM instance from Oracle 10.1 to Oracle 10.2. (Single Instance)
    OCSSD.BIN Process is Running in a NonRAC Environment
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    On RAC, expdp Removes the Service Name [ID 1269319.1]
  • 原文地址:https://www.cnblogs.com/jordan2009/p/2658330.html
Copyright © 2011-2022 走看看