我正在尝试使用该HttpUtility.UrlEncode()方法对URL进行编码,为什么我会这样做
名称空间'System.Web'中不存在类型或命名空间名称'HttpUtility'(您是否缺少程序集引用?)
错误?我正在使用Visual C#2008,Express Edition.
我正在使用的代码是简单的:
using System;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Web;
namespace Lincr
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void cmdShorten_Click(object sender, EventArgs e)
{
WebRequest wrURL;
Stream objStream;
wrURL = WebRequest.Create("http://lin.cr?l=" + System.Web.HttpUtility.UrlEncode(txtURL.Text) + "&mode=api&full=1");
objStream = wrURL.GetResponse().GetResponseStream();
StreamReader objSReader = new StreamReader(objStream);
textBox1.Text = objSReader.ReadToEnd().ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我使用Javascript方法decodeURIComponent解码编码的URL.现在我遇到了一个问题,有时在服务器之间重定向期间URL被编码两次,有时它只被编码一次.
我想检查一下,如果在调用方法后URL仍然是编码的decodeURIComponent.我怎样才能做到这一点?任何指针都对我很有帮助.
如果我递归调用一个方法并检查给定的URL是否仍然包含"%",如果它包含"%",则解码它并再次调用该方法; 如果没有将它返回给调用者,那会有效吗?
对于我的情况,我有:
callBackUrl=http%253A%252F%252Fadbc.com%252FPOSM%252Fapp%252Fpages%252Fadf.task-flow%253Fadf.tfDoc%253D%25252FWEB-INF%25252Ftask-flows%25252Fcatalog-edit-task-flow.xml%2526adf.tfId%253Dcatalog%2526_adf.ctrl-state%253Db9akorh22_9%2526articleReference%253D10C00135%2526previousView%253Dcatalog-home%2526fromUCM%253Dtrue%2526articleType%253Dposm%2526developer%253Dcentral
Run Code Online (Sandbox Code Playgroud)
现在我在我的js方法中获取callBackUrl的值,然后解码它并window.open()使用该解码的URL 触发.参数相同,它有:
参数进入它.所以我知道没有类似的查询字符串value="%..".
我写了以下方法:
var decodeURLRecursively = function(url) {
if(url.indexOf('%') != -1) {
return decodeURLRecursively(decodeURIComponent(url));
}
return url;
}
Run Code Online (Sandbox Code Playgroud) 尝试url-encoded按以下方式解码字符串
some_string = 'FireShot3%2B%25282%2529.png'
import urllib
res = urllib.unquote(some_string).decode()
res
u'FireShot3+%282%29.png'
Run Code Online (Sandbox Code Playgroud)
原始字符串是FireShot3 (2).png.任何帮助,将不胜感激.
答:
urllib.unquote_plus(urllib.unquote_plus(some_string))由于双重编码.
查看W3 Schools URL编码网页,它表示@应该编码为%40,并且space应编码为%20.
我都试过URLEncoder和URI,但同样没有上面的正确:
import java.net.URI;
import java.net.URLEncoder;
public class Test {
public static void main(String[] args) throws Exception {
// Prints me%40home.com (CORRECT)
System.out.println(URLEncoder.encode("me@home.com", "UTF-8"));
// Prints Email+Address (WRONG: Should be Email%20Address)
System.out.println(URLEncoder.encode("Email Address", "UTF-8"));
// http://www.home.com/test?Email%20Address=me@home.com
// (WRONG: it has not encoded the @ in the email address)
URI uri = new URI("http", "www.home.com", "/test", "Email Address=me@home.com", null);
System.out.println(uri.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,URLEncoder电子邮件地址是否正确但不是空格,并且 …
如何解码php中url用encodeURIComponent()编码的url?
我已经尝试了urldecode(),但后来也..我没有我编码的网址...
我必须在PHP中这样做..
我有一个带有UTF-8编码链接的简单HTML页面.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<a charset='UTF-8' href='http://server/search?q=%C3%BC'>search for "ü"</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,我没有让浏览器包含Content-Type:application/x-www-form-urlencoded; charset=utf-8在请求标头中.因此,我必须配置Web服务器以假设所有请求都是UTF-8编码(在Tomcat server.xml中为URIEncoding ="UTF-8").但是当然管理员不会让我在生产环境(Websphere)中这样做.
我知道使用Ajax很容易实现,但是如何在使用标准HTML链接时控制请求标头?该charset属性似乎不适合我(在IE8和FF 3.5中测试)
所需解决方案的第二部分是在document.location使用Javascript 更改IFrame时设置URL编码.
被%3B区别对待,以%3b在网址是什么?
我注意到Java UriBuilder没有编码:查询参数值中包含的字符(ISO 8601格式的字符串).
根据维基百科,似乎冒号应编码.
特别是,对查询字符串进行编码使用以下规则:
- 字母(AZ和az),数字(0-9)和字符'.',' - ','〜'和'_'保持原样
- SPACE编码为'+'或%20 [需要引证]
- 所有其他字符编码为%FF十六进制表示,其中任何非ASCII字符首先编码为UTF-8(或其他指定编码)
那么,这笔交易是什么?查询参数中的冒号是否应该编码?
更新:
我查找了URI语法规范(RFC 3986),看起来像查询参数中的冒号实际上并不是必需的.以下是ABNF对URI的摘录:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Razor构建一个Href字符串最终看起来像这样:
在我的模型中,我有订单ID和哈希字符串由于路由不是我网站的一部分,我不相信我可以使用默认方法,如@ Url.Action,因此不能使用协议:Request.Url.像我在其他地方使用过的方案.
所以目前我正在试图弄清楚如何使用字符串函数创建它我已经尝试过Url.Encode Url.EscapeDataString Html.Encode但是我没有得到快速:
<a href="@Uri.EscapeDataString("https://www.notmysite.co.uk/controller/action?order_ID=" + Model.bookingNumber + "&hashComparator=" + Model.hashCode)">Click Here to be transferred</a>
Run Code Online (Sandbox Code Playgroud)
输出文本总是有加号和等号,并且不起作用.我需要哪种组合?!
当我将一个数据数组作为cURL选项(通过CURLOPT_POSTFIELDS)分配时,我是否需要首先对该数据进行urlencode或将其处理?