天天看點

python requests子產品post_python requests子產品送出中文資料

我的環境:windows平台指令行編碼GBK,python2.7.6。需要用python送出一個中文驗證碼,目标位址的網頁編碼為utf-8,目前自己模拟了服務端。http請求使用python的requests子產品,但是傳回的結果往往不正常,代碼如下:

用戶端:

# python代碼

code = '中文驗證'

# 這裡面的code應該是unicode字元串了

post_data = {

'name':'jack',

'password':'123456',

'code':code # u'\u4E2D\u6587\u9A8C\u8BC1'

}

res = requests.post('http://www.test.com',data=post_data)

# 使結果集正确顯示中文

res = res.content

unicode(res,"utf-8")

if '驗證碼有誤' in res:

print 'authcode error,retry...'

else:

print 'success'

#這是服務端的PHP代碼

if ($_POST['code'] == '中文驗證'){

$result = $db->insert($_POST);

} else {

echo '驗證碼有誤';

$_POST['code'] = $_POST['code'].'e';

$result = $db->insert($_POST);

}

然後奇怪的事情出現了,資料庫code字段裡面插入了一些“中文驗證” 和 一些“中文驗證e”,請問這是什麼情況?如果編碼有問題,怎麼會時而判斷正确時而判斷錯誤呢?

補充聲明:

沒有亂碼的問題,插入資料庫都是正常的,其實在定義post_data dic的時候,python本身已經把中文unicode了,但是為什麼把這串unicode送出到伺服器跟“中文驗證”比對的時候,有時候出錯,有時候正确呢?