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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构