zoukankan      html  css  js  c++  java
  • js中encodeURIComponent与C#中HttpUtility.UrlEncode

    本文导读:在WEB编程中,经常需要通过JS传递参数给C#后台代码,如果传递的参数包括中文,则需要在JS中通过encodeURIComponent编码,对应C#中的HttpUtility.UrlEncode编码。

    1、由于JS中通过encodeURIComponent编码时,将中文或者"="、空格等特殊字符转换为大写,但是C#中HttpUtility.UrlEncode编码时,则会将这些字符转换为小写。例如 .NET中方法HttpUtility.UrlEncode会将‘=’编码成‘%3d’,而不是%3D。

    2、HttpUtility.UrlEncode会把“空格”编码为“+”,实际上应该编码为“%20”,我们需要手动将“+”替换为“%20”。

    3、鉴于以上两点,我们需要利用HttpUtility.UrlEncode,重新封装一个C#编码方法,与JS中encodeURIComponent编码对应起来。

     /// <summary>
            /// 小写转大写,特殊字符特换
             /// </summary>
            /// <param name="strSrc">原字符串</param>
            /// <param name="encoding">编码方式</param>
            /// <param name="bToUpper">是否转大写</param>
            /// <returns></returns>
            private string UrlEncode(string strSrc, System.Text.Encoding encoding, bool bToUpper)
            {
                System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
                for (int i = 0; i < strSrc.Length; i++)
                {
                    string t = strSrc[i].ToString();
                    string k = HttpUtility.UrlEncode(t, encoding);
                    if (t == k)
                    {
                        stringBuilder.Append(t);
                    }
                    else
                    {
                        if (bToUpper)
                            stringBuilder.Append(k.ToUpper());
                        else
                            stringBuilder.Append(k);
                    }
                }
                 if (bToUpper)
                    return stringBuilder.ToString().Replace("+", "%20");
                 else
                    return stringBuilder.ToString();
            }
  • 相关阅读:
    phalcon之视图缓存
    Java NIO框架Netty教程(一) – Hello Netty
    setsockopt的作用
    支持向量机通俗导论(理解SVM的三层境地)
    quartz中的corn表达式(转)
    Applet 数字签名技术全然攻略
    SJTU 3001. 二哥的幸运
    OGRE之跳出漫长的编译等待
    VB.NET 数组的定义 动态使用 多维数组
    【Python】用Python的“结巴”模块进行分词
  • 原文地址:https://www.cnblogs.com/mengfangchao/p/7838704.html
Copyright © 2011-2022 走看看