C#中的HttpUtility.UrlEncode编码与Java中URL编码不一致

最近需要调用JAVA程序接口,其中遇到的URL转码的2个问题:

1、Java中URL编码产生的字符是大写,而C#中的HttpUtility.UrlEncode产生的字符是小写

2、Java中URL编码英文'(',')'是分别转成'%28'和 '%29',而C#中的HttpUtility.UrlEncode英文括号并没有转码。

所以两者生成的字符不一致,导致系统出错。

下面贴出解决方案:

复制代码
// 对转码后的字符进行大写转换,不会把参数转换成大写
public static string UrlEncodeToJava(string source)
{
    StringBuilder builder = new StringBuilder();
    foreach (char c in source)
    {
        if (HttpUtility.UrlEncode(c.ToString(), Encoding.UTF8).Length > 1)
        {
            builder.Append(HttpUtility.UrlEncode(c.ToString(), Encoding.UTF8).ToUpper());
        }
        else
        {
            builder.Append(c);
        }
    }
    string encodeUrl = builder.ToString().Replace("(", "%28").Replace(")", "%29");
    return encodeUrl;
}
复制代码
posted @   时光机C  阅读(713)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示