2010-06-24 32 views
10

Tôi đang cố gắng thực hiện một HTTP POST với chuỗi unicode (u '\ xe4 \ xf6 \ xfc') làm tham số trong Python , nhưng tôi nhận được lỗi sau:UnicodeEncodeError: codec 'ascii' không thể mã hóa ký tự khi thử HTTP POST bằng Python

UnicodeEncodeError: 'ascii' codec không thể mã hóa nhân vật

Điều này là để các mã được sử dụng để làm cho HTTP POST (với httplib2)

http = httplib2.Http() 
userInfo = [('Name', u'\xe4\xf6\xfc')] 
data = urlencode(userInfo) 

resp, content = http.request(url, 'POST', body=data) 

Bất kỳ ý tưởng về cách giải quyết vấn đề này?

Trả lời

13

Bạn không thể trực tiếp POST đối tượng Unicode Python. Bạn nên mã hóa nó dưới dạng chuỗi UTF-8 trước tiên:

name = u'\xe4\xf6\xfc'.encode('utf-8') 
userInfo = [('Name', name)] 
+0

Đã xảy ra sự cố với mã hóa trước đó, nhưng sau đó tôi đã thực hiện nội tuyến đó. Như thế này: userInfo = [('Tên', u '\ xe4 \ xf6 \ xfc'.encode (' utf-8 '))] Dù sao, xin trả lời nhanh – David

+0

Câu hỏi tương tự của bài đăng này, http://stackoverflow.com/questions/1652904/easy-q-unicodeencodeerror-ascii-codec-cant-encode-character – shahjapan

+1

Sẽ hữu ích nếu tài liệu cho httplib2 và httplib đề cập đến ràng buộc này. – chernevik

Các vấn đề liên quan