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

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