2016-06-24 124 views
1

我发布这个字符“ç”,通常通过表单发送到我不控制的网站。我在编码数据时遇到了麻烦。尝试没有它编码为UTF-8发送数据产生这个错误(更正:适用于另一个特殊字符这个错误,错误!):请求使用python进行POST编码

File "D:\Python34\lib\http\client.py", line 1181, in _send_request 
body = body.encode('iso-8859-1') 
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0192' in position 512: ordinal not in range(256) 

我从保存UTF .csv文件中读取数据-8编码(是问题的一部分?)

使用.encode(“UTF-8”)和位的反复试验后:

发布这样的:在其网站上为C上显示:谩§

发布:ç在其网站上显示为:ç

样品缩短代码:

headers = { 
'Accept' : 'application/json, text/javascript, */*; q=0.01', 
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' 
} 

data = { 
"info" : "ç" 
} 

r = requests.post('www.urlgoeshere.com', headers=headers, data=json.dumps(data,ensure_ascii=False).encode('utf-8')) 

作为即时通讯相信你会发现,我不是很懂行的有关编码所以尽量与我裸露。

任何人都有关于如何发送这些特殊字符并让它们正确显示的提示?或者我应该放弃并全部编辑它们。他们的网站形式无论如何管理它,所以我也想:)

谢谢你的任何和所有帮助。

编辑更完整的.csv代码:

with open('data.csv', newline='') as dataFile: 
dataReader = csv.reader(dataFile) 
for row in dataReader: 
    data = { 
    "values":{ 
    "title_id":row[1], 
    "title":row[0], 
    "other stuff":[{"foo":"bar", 
    "too":"foobar"}]} 
    } 

这是在循环,我的要求去做为好。 Data.csv是以逗号分隔的文件,保存为utf-8。

+0

显然你正在发送ISO-8859-1字符。尝试“信息”:ü“ç”。另外看看包含你的代码的文件是否是UTF-8编码 – Goufalite

+0

代码和数据文件都是utf-8。不得不离开一段时间。稍后再回来(并感谢帮助sofar)。 – raecer

+0

'body = body.encode'('iso-8859-1')'是来自httplib,即试图对请求的主体进行编码的iso-8859-1,添加实际代码 –

回答

1

这个问题最简单的答案是我打开数据文件时没有指定编码。如果我将encoding="utf-8"添加到打开的函数中,并将请求编码为utf-8,则可能会很快解决此问题。