urlencode编码(urlencode编码怎么使用)

大雄 455 2022-10-25

本文目录一览:

为什么要用urlEncode编码

是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的

php 中urlencode的作用是什么不用会怎么样?

是因为URL规范中不支持中文和一些特殊符号作为参数与URL地址一起传递给WEB服务器,如果不使用urlencode进行编码后传递WEB服务器将不能识别,现在的浏览器会对表单中的中文字符在后台直接自动进行编码后传递

URLEnCode 编码 是怎么个情况

WCHAR* AnsiToUnicode(const char* buf)

{

int len = ::MultiByteToWideChar(CP_ACP, 0, buf, -1, NULL, 0);

if (len == 0) return L"";

::MultiByteToWideChar(CP_ACP, 0, buf, -1, wChar, len);

return wChar;

}

char* UnicodeToUtf8(const wchar_t* buf)

{

int len = ::WideCharToMultiByte(CP_UTF8, 0, buf, -1, NULL, 0, NULL, NULL);

if (len == 0) return "";

::WideCharToMultiByte(CP_UTF8, 0, buf, -1, utf, len, NULL, NULL);

return utf;

}

CString URLEncode(CString sIn)

{

CString sOut;

const int nLen = sIn.GetLength() + 1;

register LPBYTE pOutTmp = NULL;

LPBYTE pOutBuf = NULL;

register LPBYTE pInTmp = NULL;

LPBYTE pInBuf =(LPBYTE)sIn.GetBuffer(nLen);

BYTE b = 0;

pOutBuf = (LPBYTE)sOut.GetBuffer(nLen*3 - 2);//new BYTE [nLen  * 3];

if(pOutBuf)

{

pInTmp   = pInBuf;

pOutTmp = pOutBuf;

while (*pInTmp)

{

char c = *pInTmp;

if (c0||c255)

{

*pOutTmp++ = '%';

*pOutTmp++ = toHex(*pInTmp4);

*pOutTmp++ = toHex(*pInTmp%16);

}

else if (isspace(*pInTmp))

{

*pOutTmp++ = '+';

}

else

{

*pOutTmp++ = *pInTmp;

}

pInTmp++;

}

*pOutTmp = '\0';

sOut.ReleaseBuffer();

}

sIn.ReleaseBuffer();

return sOut;

}

Cstring URL = ?

mkey=5338feeae7ee5787f=3c13p=.exe;

URL = UnicodeToUtf8(AnsiToUnicode(URL));

URL = URLEncode(URL);

URL 下载地址,有汉字也可以用


为什么大多数语言都有urlencode


urlencode是一个函数,可将字符串以URL编码,用于编码处理。所以大多数语言都有urlencode。

URLENCODE和URLDECODE是比较常用的URL参数转换方法,为以后使用方便,自己归类一下.

一.JavaScript:

编码:encodeURIComponent(URIString)

解码:decodeURIComponent(encodedURIString)

二.ASP:

编码:Server.urlencode(str)

解码:无

三.Asp.Net

编码:HttpUtility.Urlencode(str)

解码:HttpUtility.UrlDecode(str)

四.Php

编码:urlencode(str)

解码:urldecode(str)

五.Java

编码:java.net.URLEncode.encode(str)

解码:java.net.URLDecoder.decode(str)

ubuntu怎么得到urlencode编码

在 Java、.net 和 JS 中都有相应的 encodeURL 方法可用,在 Objective-C 语言中,你可以试下

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc;

来对完整的 URL(带请求参数的)进行编码,比如执行下面的代码:

NSString *url=@";sd p2=中文";

NSString *encodedValue = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

上面代码转换出的 encodedValue 是:

;sd%20p2=%E4%B8%AD%E6%96%87

可见,它不会转换 URL 中的 ?% 符号,这也正常,因为它肯定分不出哪个  是参数的连接符号还是参数值,你可以单独编码参数,然后在拼接成 URL 之前把属性参数值中的 ?% 等符号分别替换成相应的编码。

或者,您还可以试下另外一个方法来单独编码参数值,然后拼接成完整的 URL:

/* newString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, origString, NULL, NULL, kCFStringEncodingUTF8); */

CF_EXPORT

CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding);

本文原始链接:, 来自:隔叶黄莺 Unmi Blog

参考代码,分别编码前面的 p1=%+sd fp2=中文,两个参数的代码和结果如下:

NSString *param = @"%+sd f";

NSString *encodedValue = (NSString*)CFURLCreateStringByAddingPercentEscapes(nil,

(CFStringRef)param, nil,

(CFStringRef)@"!*'();:@=+$,/?%#[]", kCFStringEncodingUTF8);

这样编码出来的 encodedValue 为 %25%2B%26sd%20f,对 ?% 等符号也会编码的。用上面的代码对 “中文” 进行编码的结果是:%E4%B8%AD%E6%96%87,与前面是一致的。

我实际应用时还是这个 CFURLCreateStringByAddingPercentEscapes 方法比较方便。

我们在项目中是使用的 ASIHTTPRequest 组件来访问 URL 的,在使用 ASIFormDataRequest 时发出它其中有一个方法:

- (NSString*)encodeURL:(NSString *)string

{

NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(

kCFAllocatorDefault,

(CFStringRef)string, NULL, CFSTR(":/?#[]@!$ '()*+,;=\"%{}|\\^~`"),

CFStringConvertNSStringEncodingToEncoding([self stringEncoding])) autorelease]);

if (newString) {

return newString;

}

return @"";

}

看起来它就是个 Objective-C 版的 encodeURL 方法,可是它声明成了一个实例方法,必须构造出 ASIFormDataRequest 实例才能使用它,在它的父类 ASIHTTPRequest 中都无该方法。现在来试验一下这个方法的返回值:

ASIFormDataRequest *formDataRequest = [ASIFormDataRequest requestWithURL:nil];

NSString *encodedValue1 = [formDataRequest encodeURL:@"%+sd f"];

NSString *encodedValue2 = [formDataRequest encodeURL:@"中文"];

得出的 encodedValue1 和 encodedValue2 分别是 %25%2B%26sd%20f 和 %E4%B8%AD%E6%96%87,和前面是一致的,所以你可以用 ASIFormDataRequest 提供的方式来进行 URLEncode,把这个方法提出为一个工具方法即可。

下是符合UrlEncode编码的是

urlencode编码:就是将字符串以URL编码,一种编码方式,主要为了解决url中中文乱码问题。

例如:

String   mytext   =   java.net.URLEncoder.encode("中国",   "utf-8");   //urlencode编码

String   mytext2   =   java.net.URLDecoder.decode(mytext,   "utf-8");   //urlencode解码

这两条语句在同一个页面中的话,得到的结果是:

mytext:   %E4%B8%AD%E5%9B%BD

mytex2:   中国


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:API数据接口(api数据接口文档)
下一篇:icp域名备案查询(icp域名备案查询网站名称和地址)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~