鱼C论坛

 找回密码
 立即注册
查看: 2151|回复: 5

[已解决]关于百度搜索的链接

[复制链接]
发表于 2023-4-14 20:40:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 歌者文明清理员 于 2023-4-14 20:42 编辑

1. 在网址上显示的是https://www.baidu.com/s?wd=鱼C,为什么复制就变成了https://www.baidu.com/s?wd=%E9%B1%BCC
2. 这是啥意思,给张表?

而且直接https://www.baidu.com/s?wd=鱼C也行,为什么复制又变成了https://www.baidu.com/s?wd=%D3%E3C
最佳答案
2023-4-14 21:51:50
  • 当你在浏览器的地址栏看到这个链接:https://www.baidu.com/s?wd=鱼C,实际上浏览器内部已经对非ASCII字符(例如汉字)进行了编码。这种编码称为URL编码(又称百分号编码)。当你复制链接时,你得到的是经过URL编码的版本,即:https://www.baidu.com/s?wd=%E9%B1%BCC
  • 鱼C这两个字在URL编码后,变成了“%E9%B1%BCC”。每个汉字都会被替换成一个或多个以百分号(%)开头的字符序列。这里,“%E9%B1%BC”代表“鱼”这个汉字。你提到的另一个编码后的链接“https://www.baidu.com/s?wd=%D3%E3C”中,“%D3%E3”代表另一个汉字,可能是由于不同的编码方式导致的差异。


为什么从导航栏复制的链接中文会变成URL编码?

这是因为URL需要遵循一定的格式,以便在全球范围内进行通信。在URL中,某些字符具有特殊含义,如问号(?)用于表示查询字符串的开始,井号(#)用于表示锚点等。因此,为了避免混淆和解析错误,需要对URL中的特殊字符和非ASCII字符进行编码。

URL编码是一种将特殊字符和非ASCII字符转换为可在互联网上安全传输的格式的方法。它使用百分号(%)加上两个十六进制数字来表示一个字符。这样一来,即使在不同的计算机系统、浏览器或国家之间传输,URL仍然可以被正确解析和访问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-14 20:54:03 | 显示全部楼层
在url上的非ascii字符都会被url编码,

>>> '鱼'.encode()
b'\xe9\xb1\xbc'
>>>


看出来没,实际上就是把 \x 换成了 %

也可以用以下方式

>>> from urllib.parse import quote
>>> quote('鱼')
'%E9%B1%BC'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-14 21:03:27 | 显示全部楼层
当我们在网址中输入中文字符时,浏览器会将这些字符进行编码,即将其转换成符合 URL 规范的字符,比如 %E9%B1%BCC 就是 鱼C 的 URL 编码。URL 编码的目的是为了保证在因某种原因而需要特殊处理的情况下,这些字符能够被正确地传递和解析。

下面是一张常见字符的 URL 编码表:

字符        ASCII 码        URL 编码
空格        32        %20
!        33        %21
"        34        %22
#        35        %23
$        36        %24
%        37        %25
&        38        %26
'        39        %27
(        40        %28
)        41        %29
*        42        %2A
+        43        %2B
,        44        %2C
-        45        %2D
.        46        %2E
/        47        %2F
:        58        %3A
;        59        %3B
<        60        %3C
=        61        %3D
>        62        %3E
?        63        %3F
@        64        %40
[        91        %5B
\        92        %5C
]        93        %5D
^        94        %5E
_        95        %5F
`        96        %60
{        123        %7B
|        124        %7C
}        125        %7D
~        126        %7E
URL 编码表中,可以看到将常见的符号都映射成了一些特殊的字符序列,在 URL 中使用这些特殊的字符序列代替原始的字符,就可以避免一些转义问题。对于中文等非 ASCII 字符,则会将其转换成 %xx 类似的形式进行表示。
from urllib.parse import quote

s = "你好,世界!"
urlencode = quote(s)
print(urlencode) # %E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-14 21:17:27 | 显示全部楼层
@liuhongrun2022 @isdkz 请回答:
而且直接https://www.baidu.com/s?wd=鱼C也行,为什么复制又变成了https://www.baidu.com/s?wd=%D3%E3C?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-14 21:19:12 | 显示全部楼层
本帖最后由 liuhongrun2022 于 2023-4-14 21:20 编辑


这是因为浏览器在发送请求时,会将 URL 中的非 ASCII 字符进行 URL 编码,以保证它们能够被正确地传递和解析。在你手动输入中文字符时,浏览器会自动将它们进行编码;而当你复制粘贴一个 URL 时,浏览器会将其中的非 ASCII 字符自动进行编码,以避免出现一些解析错误。

例如,在你手动输入 鱼C 这个关键词时,它会被编码成 %E9%B1%BCC;而当你复制粘贴 https://www.baidu.com/s?wd=鱼C 这个 URL 时,浏览器会将其中的 鱼C 自动进行编码,变成了 %E9%B1%BCC。这两种形式在实际情况下都是等价的,可以被正确地解析。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-14 21:51:50 | 显示全部楼层    本楼为最佳答案   
  • 当你在浏览器的地址栏看到这个链接:https://www.baidu.com/s?wd=鱼C,实际上浏览器内部已经对非ASCII字符(例如汉字)进行了编码。这种编码称为URL编码(又称百分号编码)。当你复制链接时,你得到的是经过URL编码的版本,即:https://www.baidu.com/s?wd=%E9%B1%BCC
  • 鱼C这两个字在URL编码后,变成了“%E9%B1%BCC”。每个汉字都会被替换成一个或多个以百分号(%)开头的字符序列。这里,“%E9%B1%BC”代表“鱼”这个汉字。你提到的另一个编码后的链接“https://www.baidu.com/s?wd=%D3%E3C”中,“%D3%E3”代表另一个汉字,可能是由于不同的编码方式导致的差异。


为什么从导航栏复制的链接中文会变成URL编码?

这是因为URL需要遵循一定的格式,以便在全球范围内进行通信。在URL中,某些字符具有特殊含义,如问号(?)用于表示查询字符串的开始,井号(#)用于表示锚点等。因此,为了避免混淆和解析错误,需要对URL中的特殊字符和非ASCII字符进行编码。

URL编码是一种将特殊字符和非ASCII字符转换为可在互联网上安全传输的格式的方法。它使用百分号(%)加上两个十六进制数字来表示一个字符。这样一来,即使在不同的计算机系统、浏览器或国家之间传输,URL仍然可以被正确解析和访问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表