关于Server.UrlPathEncode和Server.UrlEncode的区别

7 篇文章 0 订阅

Server.UrlPathEncode默认使用的是utf-8编码而Server.UrlEncode默认为系统默认编码(一般是gb2312)

Server.UrlDecode默认使用系统编码解码。所以这里容易发生路径解码成乱码的问题。

 

Response.Write(Server.UrlDecode(Server.UrlPathEncode("中文")) & "<hr>")
Response.
Write(HttpUtility.UrlDecode(Server.UrlPathEncode("中文"), Encoding.UTF8) & "<hr>")

 

解决办法: 解码的地方使用utf-8编码。HttpUtility.UrlDecode(Server.UrlPathEncode(String),  Encoding.UTF8);

              或者编码的地方使用Server.UrlEncode(),编解码的默认编码方式都用gb2312;

URL编码:
System.Web.HttpUtility.UrlEncode(string); Server.UrlEncode(string);
System.Web.HttpUtility.UrlPathEncode(string); Server.UrlPathEncode(string);

UrlEncode与UrlPathEncode编码规范不一样
比如: UrlEncode对整个URL进行编码(即http://www.website.com/全部编码)
UrlPathEncode对http://之后的内容进行编码(即www.website.com)

### 回答1: urllib.parse.urlencode 是 Python 中用于对 URL 进行编码的函数。它可以将查询字符串(如 key1=value1&key2=value2)转换为 URL 编码(如 key1%3Dvalue1%26key2%3Dvalue2)。这样就可以在 URL 中安全地传递特殊字符。 ### 回答2: urllib.parse.urlencode是Python标准库中的一个模块,它主要用于将一个字典类型的数据转换成符合url规范的查询字符串。当我们需要将字典类型的数据提交给服务器进行处理时,就需要将字典类型的数据转换为符合url规范的查询字符串。 在使用urllib.parse.urlencode之前,我们需要先引入它,格式如下:from urllib.parse import urlencode 接下来我们可以这样使用urlencode方法:urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus) 其中,query参数代表要转换成查询字符串的字典类型的数据;doseq参数是用来控制是否需要将序列化的数据变成独立的参数的;safe参数可以指定不进行转义的字符集;encoding指定编码方式,errors指定错误处理方式,quote_via用于指定转义字符的方式。这几个参数中,query是必需的,其他参数可以选择性使用。 使用urlencode方法之后,我们得到的就是一个url参数字符串,它就可以作为get请求的参数提交给服务器进行处理。 总之,urllib.parse.urlencode非常实用,可以很方便地将字典类型的数据转换成符合url规范的查询字符串,使用它可以简化我们的代码开发,提高我们的工作效率。 ### 回答3: urllib.parse.urlencode是Python标准库中的一个函数,主要用于将字典或元组等可迭代对象中的参数转换为URL查询字符串格式。 具体来说,该函数通过将参数按照key=value的形式拼接,并用&符号连接不同的参数,生成URL查询字符串。例如,将字典{'name': '张三', 'age': 18}转换为URL查询字符串后,得到的结果为'name=%E5%BC%A0%E4%B8%89&age=18',其中对中文使用了URL编码。 该函数的使用非常简单,只需要传入需要转换的参数对象即可,如下: import urllib.parse params = {'name': '张三', 'age': 18} query_string = urllib.parse.urlencode(params) print(query_string) 输出结果为:name=%E5%BC%A0%E4%B8%89&age=18 除了用于生成URL查询字符串外,该函数还可以用于POST请求中的请求体传参,例如: import urllib.parse import urllib.request url = 'http://www.example.com/api' params = {'name': '张三', 'age': 18} data = urllib.parse.urlencode(params).encode('utf-8') req = urllib.request.Request(url, data=data) response = urllib.request.urlopen(req) result = response.read().decode('utf-8') print(result) 以上代码中,首先使用urlencode将参数转换为URL查询字符串格式,然后使用encode将其编码为utf-8格式的字节串,并将其作为请求体传递给urlopen函数,最后将响应内容解码为utf-8格式字符串并输出。 总之,urllib.parse.urlencode是Python中一个非常方便的函数,可以用于生成URL查询字符串,也可以用于POST请求中的请求体传参。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值