實(shí)際問題
Python中的urllib模塊用來處理url相關(guān)的操作,unquote方法對應(yīng)javascript中的urldecode方法,它對url進(jìn)行解碼,把類似"%xx"的字符替換成單個(gè)字符,例如:“%E6%B3%95%E5%9B%BD%E7%BA%A2%E9%85%92”解碼后會(huì)轉(zhuǎn)換成“法國紅酒”,但是使用過程中,如果姿勢不對,最終轉(zhuǎn)換出來的字符會(huì)是亂碼“?3?????o¢é
”。
#取得kw
kw
=
self
.
url
.
split
(
'&'
)
[
-
1
]
.
replace
(
'kw='
,
''
)
#url解碼
word
=
urllib
.
unquote
(
kw
)
kw的值打印出來的顯示的是:%E5%A4%A7%E6%B4%B2%E5%8F%A4%E6%B8%A1
但是word確是:?¤§?′2?¤???
分析
直接編碼的字符來處理看看是否會(huì)出現(xiàn)亂碼:%E5%A4%A7%E6%B4%B2%E5%8F%A4%E6%B8%A1
#取得kw
kw
=
“
%
E5
%
A4
%
A7
%
E6
%
B4
%
B2
%
E5
%
8F
%
A4
%
E6
%
B8
%
A1”
#url解碼
word
=
urllib
.
unquote
(
kw
)
發(fā)現(xiàn)沒有問題word正常顯示
那就是在取值kw的時(shí)候有問題
發(fā)現(xiàn)函數(shù)默認(rèn)返回的是值的類型是unicode
相當(dāng)于
u“%E5%A4%A7%E6%B4%B2%E5%8F%A4%E6%B8%A1”
解決辦法
在函數(shù)調(diào)用之后,使用強(qiáng)制類型轉(zhuǎn)換轉(zhuǎn)為str類型,去掉u
#取得kw
kw
=
self
.
url
.
split
(
'&'
)
[
-
1
]
.
replace
(
'kw='
,
''
)
kw
=
str
(
kw
)
#url解碼
word
=
urllib
.
unquote
(
kw
)
這樣就能正常解碼了
- PS Unicode類型轉(zhuǎn)str類型,不能使用str()強(qiáng)制轉(zhuǎn)換,而是使用strr.encode(‘utf-8’)編碼轉(zhuǎn)換
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
