C# Url转义符的问题

问题描述

用HttpWebRequest.Create的时候。传递%和|||会自动转化为%25和%7C.问题不需要他转化%25和%7C。有什么办法吗?

解决方案

解决方案二:
把%替换为其他的字符
解决方案三:
问题我采集别的数据需要!采集别人数据需要提交%才能识别~
解决方案四:
对方解码就好了
解决方案五:
URL的协议rfc3986只支持有限的字符。%不属于有效字符,转义是正确的。应该对方应该处理。服务器是asp.ne的话,我记得framework会自动处理。
解决方案六:
引用4楼findcaiyzh的回复:

URL的协议rfc3986只支持有限的字符。%不属于有效字符,转义是正确的。应该对方应该处理。服务器是asp.ne的话,我记得framework会自动处理。

+1服务器端会自动解码。
解决方案七:
引用5楼smthgdin的回复:

Quote: 引用4楼findcaiyzh的回复:
URL的协议rfc3986只支持有限的字符。%不属于有效字符,转义是正确的。应该对方应该处理。服务器是asp.ne的话,我记得framework会自动处理。

+1服务器端会自动解码。

我现在用winfrom编写的~~很简单的有米有办法解决这个问题!!
解决方案八:
引用6楼w297088867的回复:

Quote: 引用5楼smthgdin的回复:
Quote: 引用4楼findcaiyzh的回复:
URL的协议rfc3986只支持有限的字符。%不属于有效字符,转义是正确的。应该对方应该处理。服务器是asp.ne的话,我记得framework会自动处理。

+1服务器端会自动解码。

我现在用winfrom编写的~~很简单的有米有办法解决这个问题!!

Winform写服务器端?用HttpUtility.UrlDecode解码
解决方案九:
System.Net.HttpWebRequest.Create("http://www.asdfasdf.net/%1").RequestUri.ToString)得到结果:http://www.asdfasdf.net/%251Uri.UnescapeDataString("http://www.asdfasdf.net/%251")得到结果:http://www.asdfasdf.net/%1
解决方案十:
引用7楼findcaiyzh的回复:

Quote: 引用6楼w297088867的回复:
Quote: 引用5楼smthgdin的回复:
Quote: 引用4楼findcaiyzh的回复:
URL的协议rfc3986只支持有限的字符。%不属于有效字符,转义是正确的。应该对方应该处理。服务器是asp.ne的话,我记得framework会自动处理。

+1服务器端会自动解码。

我现在用winfrom编写的~~很简单的有米有办法解决这个问题!!

Winform写服务器端?用HttpUtility.UrlDecode解码

我要写个采集器!!懂我意思吗?采集人家的数据~~~
解决方案十一:
引用8楼geyewei的回复:

System.Net.HttpWebRequest.Create("http://www.asdfasdf.net/%1").RequestUri.ToString)得到结果:http://www.asdfasdf.net/%251Uri.UnescapeDataString("http://www.asdfasdf.net/%251")得到结果:http://www.asdfasdf.net/%1

什么意思?那应该怎么做呢?
解决方案十二:
引用2楼w297088867的回复:

问题我采集别的数据需要!采集别人数据需要提交%才能识别~

那是你根本没有搞懂”需要提交%才能识别“是什么意思!提交的url中含有%,那么原始的内容不一定有%号,可能是转义之后才会有%号。绝不是说人家原始的内容就一定有%号。如果你没有这个urlencode概念,就不会理解。
解决方案十三:
引用2楼w297088867的回复:

问题我采集别的数据需要!采集别人数据需要提交%才能识别~

停留在这个上面纠结,根本是浪费时间。你应该把你的”采集数据的需要“稍微深入一点明白地说明。
解决方案十四:
建议跟通信协议相关的东西,还是和对方多沟通,而不是自己在那瞎猜要提交%才能识别,到底要提交个什么东西,问清楚
解决方案十五:
还有,不管你最后弄明白了没有,都是要真正测试一下才能知道到底好用不好用也许你现在就已经能正常通信了,结果还在那里纠结这个.试了不好用,然后再找原因,改了再试.想一步到位,你得非常熟悉才行.
解决方案:
引用14楼Z65443344的回复:

还有,不管你最后弄明白了没有,都是要真正测试一下才能知道到底好用不好用也许你现在就已经能正常通信了,结果还在那里纠结这个.试了不好用,然后再找原因,改了再试.想一步到位,你得非常熟悉才行.

这么跟你说url_encodegbk传递参数的时候不是有%字符串,然后get发送过去的时候.会吧%直接变成%25了。就怎么简单,如何解决这个问题。C#winfrom
解决方案:
引用12楼sp1234的回复:

Quote: 引用2楼w297088867的回复:
问题我采集别的数据需要!采集别人数据需要提交%才能识别~

停留在这个上面纠结,根本是浪费时间。你应该把你的”采集数据的需要“稍微深入一点明白地说明。

这么跟你说url_encodegbk传递参数的时候不是有%字符串,然后get发送过去的时候.会吧%直接变成%25了
解决方案:
试试fastCSharp.uri.CreateAbsolute("http://www.asdfasdf.net/%1",fastCSharp.uri.flags.ShouldBeCompressed|fastCSharp.uri.flags.E_QueryNotCanonical)

解决方案:
引用15楼w297088867的回复:

Quote: 引用14楼Z65443344的回复:
还有,不管你最后弄明白了没有,都是要真正测试一下才能知道到底好用不好用也许你现在就已经能正常通信了,结果还在那里纠结这个.试了不好用,然后再找原因,改了再试.想一步到位,你得非常熟悉才行.

这么跟你说url_encodegbk传递参数的时候不是有%字符串,然后get发送过去的时候.会吧%直接变成%25了。就怎么简单,如何解决这个问题。C#winfrom

还是不大明白你到底是碰到了什么问题,如果你能更详细的描述一下,就对其他人更有帮助了。不过我肢解一下你自己的话,看看i不是下面这回事?如果【get发送过去的时候.会吧%直接变成%25了】这个现象存在的话,说明在【get发送过去的时候】处理里面已经进行了编码变换了,就不需要通过【url_encodegbk传递参数的时候】这个处理了。
解决方案:
我想sp1234的意思是你不需要太关心%的问题。url_encode的目的是保证URL是合法有效的,所以会用%25替换%。程序自己会在处理的时候做url_decode处理,你如果直接把%发送到服务器,因为%不是合法的URL字符,反而不能识别了。有些虽然是标准,但是也有不按标准办事的,所以最关键的就是你在程序里面试一下把被编码的网址发送到服务器,看看有没有返回应该返回的网页。如果没有的话,大家在分析一下是什么原因。看一下:引用16楼w297088867的回复:

Quote: 引用12楼sp1234的回复:
Quote: 引用2楼w297088867的回复:
问题我采集别的数据需要!采集别人数据需要提交%才能识别~

停留在这个上面纠结,根本是浪费时间。你应该把你的”采集数据的需要“稍微深入一点明白地说明。

这么跟你说url_encodegbk传递参数的时候不是有%字符串,然后get发送过去的时候.会吧%直接变成%25了

解决方案:
高手,问题解决了嘛?说下咋解决的啊。顺便结下帖。
解决方案:
贴下找到的方法:搞定了,使用uil创建httpWebRequest实例,如下:httpWebRequest=(HttpWebRequest)HttpWebRequest.Create(newUri(url,true));Uri对应构成函数说明如下:...原帖地址:
解决方案:

解决方案:
C#转义字符上标有123为什么没有4,求问4以后的上标转义字符是什么?急急急,大神们快来帮帮我啊
解决方案:
14年的帖子都被翻出来。。。我也是醉了估计楼主早就不在了最主要是的上面的人讨论了那么多我就不明白了。。算了不说了自己看图吧请告诉我哪里转义了?。。居然还讨论除了这么多出来都没用过或者说都没试一下就在瞎想回答吗?。。

时间: 2024-09-22 05:15:26

C# Url转义符的问题的相关文章

SQL中通配符、转义符与[号的使用(downmoon)

一.搜索通配符字符的说明可以搜索通配符字符.有两种方法可指定平常用作通配符的字符: 使用 ESCAPE 关键字定义转义符.在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符.例如,要搜索在任意位置包含字符串 5% 的字符串,请使用: WHERE ColumnA LIKE '%5/%%' ESCAPE '/' 在上述 LIKE 子句中,前导和结尾百分号 (%) 解释为通配符,而斜杠 (/) 之后的百分号解释为字符 %. 在方括号 ([ ]) 中只包含通配符本身.要搜索破折号 (-) 而不

Linux Shell 通配符、元字符、转义符使用实例介绍

  下面是一个实例: 代码如下: [chengmo@localhost ~/shell]$ ls a.txt b.txt c.old #2 [chengmo@localhost ~/shell]$ ls *.txt a.txt b.txt #3 [chengmo@localhost ~/shell]$ ls d*.txt ls: 无法访问 d*.txt: 没有那个文件或目录 从上面这个实例,不知道大家有没有发现问题呢.我们先了解一下,通配符相关知识,再分析下这个实例吧. 一.linux shel

实战WPS转义符在查找替换中的应用

政教处主任用WPS表格制作了一个家校联系卡,有一位班主任比较聪明,将班主姓名都是用两个*表示的,本来以为到时替换就行了,可最后一操作就傻眼了――所有单元格都换上了班主任的大名. 对查找与替换功能比较熟悉的朋友会知道,在WPS文字和WPS表格中可以使用通配符星号"*"和问号"?"进行一些较为复杂的查找.其中"*"可以匹配任意个任意字符,例如在查找和替换对话框的"查找内容"文本框内输入"w*d",则文章中类似&

原始数据-单引号转义符的问题 ?????

问题描述 单引号转义符的问题 ????? 我们在往数据库中插入数据时,给单引号转义后就多了个单引号,从数据库中读出来之后是不是要把这个转义符过滤处理后 才是原始数据啊 解决方案 你是怎么给单引号转义的?如果是sql server,应该连用两个引号. 解决方案二: 你可以考虑将内容编码(比如base64),然后存进去,这样一些特殊字符就好处理了 解决方案三: 你可以在插入之后再查询 看看到底最终插入的是什么数据 解决方案四: 你插入的数据允许特殊字符吗?为什么要存储单引号?

Linux Shell通配符、元字符、转义符最全使用攻略

说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: [chengmo@localhost ~/shell]$ ls    a.txt b.txt c.old   [chengmo@localhost ~/shell]$ ls *.txt    a.txt b.txt   [chengmo@localhost ~/shell]$ ls d*.txt  ls: 无法访问 d*.txt: 没有那个文件或目录 从上面这个实例,不知道大家有没有发现问题呢.我们先了解一下,

关于js中单双引号以及转义符的理解

关于js中单引号(')和双引号(")的使用以及转义的理解 这几天一直在画页面,身为开发人员的我之所以要画页面是因为当前项目中的页面上所有的东西都是从数据库中取得的,也就是动态的,类似于我们设计自己的个人QQ空间,但因为是大型平台,有自定义业务的概念 ,所有更为复杂,在这就不多说了,我所谓的画页面就是如何把数据结合逻辑,变成HTML,其中遇到的最大的问题就是我今天要说的;  一个页面上有一个查询,当然查询的条件,字段类型都是动态的,要根据数据类型生成不同的文本框,如果是varchar2就生成不同的

js技巧--转义符"\"的妙用_javascript技巧

// blueDestiny, never-online // blueDestiny [at] 126.com 通常,我们在动态给定一个container的innerHTML时,通常是样做的: <div id="divc" /> <SCRIPT LANGUAGE="JavaScript"> var div = document.getElementById("divc"); var html = ""

JS转换HTML转义符的方法_javascript技巧

//去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,'');//删除所有HTML标签 } //普通字符转换成转意符 function html2Escape(sHtml) { return sHtml.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&':'&

SQL中使用ESCAPE定义转义符详解_SQLite

使用ESCAPE定义转义符      在使用LIKE关键字进行模糊查询时,"%"."_"和"[]"单独出现时,会被认为是通配符.为了在字符数据类型的列中查询是否存在百分号 (%).下划线(_)或者方括号([])字符,就需要有一种方法告诉DBMS,将LIKE判式中的这些字符看作是实际值,而不是通配符.关键字 ESCAPE允许确定一个转义字符,告诉DBMS紧跟在转义字符之后的字符看作是实际值.如下面的表达式: LIKE '%M%' ESCAPE 'M