[英]Python 2.7, Requests library, can't get unicode
請求庫的文檔說,requests.get()方法總是返回unicode。 但是,當我嘗試知道返回的編碼是什么時,我看到了“ windows-1251”。 那是個問題。 當我嘗試獲取request.get(url).text時,出現錯誤,因為當前url的內容帶有西里爾符號。
import requests
url = 'https://www.weblancer.net/jobs/'
r = requests.get(url)
print r.encoding
print r.text
我得到這樣的東西:
windows-1251
UnicodeEncodeError: 'ascii' codec can't encode characters in position 256-263: ordinal not in range(128)
是python 2.7的問題還是根本沒有問題? 幫我
從文檔 :
請求將自動解碼來自服務器的內容。 大多數Unicode字符集都是無縫解碼的。
發出請求時,請求會根據HTTP標頭對響應的編碼進行有根據的猜測。
requests.get().encoding
告訴您用於將來自服務器的位流轉換為響應中的Unicode文本的編碼。
在您的情況下,這是正確的:響應中的標題指出字符集是Windows-1251
您遇到的錯誤是在那之后。 您正在使用的python嘗試將Unicode編碼為ascii以進行打印,但失敗了。
您可以說print r.text.encode(r.encoding)
...與Padraic在評論中的建議是相同的結果-即r.content
。
注意: requests.get().encoding
是一個lvar:如果猜錯了,可以將其設置為所需的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.