C#中的System.Web.HttpUtility.UrlEncode转码问题
最近需要与JAVA程序对接口,其中遇到的URL转码问题:
Java中URL编码所用的 URLEncoder.encode 产生的字符是大写且英文'(',')'是分别转成'%28'和 '%29'
而C#中的HttpUtility.UrlEncode产生的字符是小写且英文括号并没有转码,所以两者生成的字符不一致,导致系统出错。
下面贴出解决方案:
1、字符大小写问题:
//对转码后的字符进行大写转换,不会把参数转换成大写(采用)
public static string GetUpperEncode(string encodeUrl)
{
var result = new StringBuilder();
int index = int.MinValue;
for (int i = ; i < encodeUrl.Length; i++)
{
string character = encodeUrl[i].ToString();
if (character == "%")
index = i;
if (i - index == || i - index == )
character = character.ToUpper();
result.Append(character);
}
return result.ToString();
}
//网上搜的其他方法,通过该方法代替直接调用HttpUtility.UrlEncode
private static string UrlEncode(string temp, Encoding encoding)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = ; i < temp.Length; i++)
{
string t = temp[i].ToString();
string k = HttpUtility.UrlEncode(t, encoding);
if (t == k)
{
stringBuilder.Append(t);
}
else
{
stringBuilder.Append(k.ToUpper());
}
}
return stringBuilder.ToString();
}
2、英文括号问题:
//通过替换字符串解决
encodeurl= encodeurl.Replace("(","%28");
encodeurl=encodeurl.Replace(")", "%29");
C#中的System.Web.HttpUtility.UrlEncode转码问题的更多相关文章
- JS三个编码函数和net编码System.Web.HttpUtility.UrlEncode比较
JS三个编码函数和net编码比较 总结 1.escape.encodeUri.encodeUriComponent均不会对数字.字母进行编码.2.escape:对某些字符(如中文)进行unicode编 ...
- c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode
最近网站里的参数包括中文的例如: http://www.taiba/Tag%b0%ae%c7%e9.html 已开始使用 Server.UrlEncode来做的,但发现,有一些中文在url重写的是说找 ...
- asp.net URL传递中文参数System.Web.HttpUtility.UrlEncode与Server.UrlEncode的区别
asp.net URL传递中文参数System.Web.HttpUtility.UrlEncode与Server.UrlEncode的区别(一) HttpUtility.UrlEncode 方法: 对 ...
- [转载]未能从程序集“System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”中加载类型“System.Web.WebPages.DisplayModeProvider”
转载于http://bkcoding.cn/post_1210.html 使用vs2010开发asp.net mvc程序时,出现 未能从程序集“System.Web.WebPages, Version ...
- System.Web.HttpUtility VS System.Web.HttpServerUtility VS System.Net.WebUtility
HttpUtility 类作为 HttpServerUtility 类的内部使用,HttpServerUtility 通过System.Web.UI.Page.Server属性(WebForm)/Co ...
- 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web.SessionSta
我直接在父类的构造方法中调用了sessionj结果就报这个错误 搜了好久 让改web.config 可是不起作用 代码如下: public class BasePage:System.Web.UI.P ...
- log4net 中错误 System.Web.HttpException (0x80004005): 文件不存在
用日志组件,Global 中配置的输出最后一个错误信息,总是出现下面的错误信息: 2014-04-01 14:35:41,757 级别:ERROR 信息:[Exception]:System.Web. ...
- C#中使用System.Web.Mail.MailMessage类无法CC多人的问题
从.NET 2.0 开始,引入了一个新的类,System.Net.Mail.MailMessage.该类用来取代 .NET 1.1 时代System.Web.Mail.MailMessage类.Sys ...
- HttpUtility.UrlEncode与Server.UrlEncode()转码区别
在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测试: string file="文件上(传)篇.doc";string Server_UrlEncode=Server ...
随机推荐
- luogu_P3313 [SDOI2014]旅行
传送门 Solution 第二次学习可持久化线段树 打了一道裸题来练习一下-- 对于每个宗教都可以开一个主席树 基础操作 树剖lca Code #include<bits/stdc++.h&g ...
- 【CSP模拟赛】凤凰院凶真(最长公共上升子序列)
题目描述 α世界线.凤凰院凶真创立了反抗SERN统治的组织“瓦尔基里”.为了脱离α线,他需要制作一个世界线变动率测量仪. 测量一个世界线相对于另一个世界线的变动率,实质上就是要求出这两个世界线的最长公 ...
- cropper手机使用实例
cropper手机使用实例 一.总结 一句话总结: 启示:还是要多个相关的实例交叉使用,相互印证,查漏补缺,可以更加高效和方便和节约时间 二.Cropper.js从前台到后台的完整实例应用 转自或参考 ...
- laravel修改了配置文件不生效,修改了数据库配置文件不生效
Laravel缓存配置文件,因此您可能只需要清除缓存: php artisan config:clear 转: http://www.voidcn.com/article/p-sgcusrjp-bxw ...
- 【maven】如何将一个已有的jar文件,生成maven坐标,并上传至远程仓库
[一]如何将一个已有的jar文件,生成maven坐标 使用maven构建项目需要在项目中引入自定义的一些包,也像maven一样在工程的pom.xml中引入相应的坐标,这时候我们就要自己把包上传到本地仓 ...
- 商城怎么使用ajax?
1.前端: Ajax.call('order.php?act=export', params, function (data) { document.getElementById("expo ...
- python的xpinyin模块:汉字转拼音
pypinyin 1.安装 pip install pypinyin 2.使用方法 >>> from pypinyin import ...
- Linux_CentOS 文件管理和目录管理
Linux 文件管理 1.创建文件 touch file1 2.删除文件 rm -rf file11 -r:递归的删除目录下面文件以及子目录下文件. -f:强制删除,忽略不存在的文件,从不给出提示 3 ...
- Angular 项目打包之后,部署到springboot项目中,刷新访问404解决方法
解决方法1: app.module.ts文件添加两行代码: import { LocationStrategy, HashLocationStrategy } from '@angular/commo ...
- ISO/IEC 9899:2011 条款6.8.3——表达式与空语句
6.8.3 表达式与空语句 语法 1.expression-statement: expressionopt ; 语义 2.在一条表达式语句中的表达式被计算为一个void表达式作为其副作用.[注 ...