使用python

时间:2016-06-24 09:38:57

标签: python encoding utf-8 python-requests

我发布的这个字符“ç”通常是通过表单发送到我无法控制的网站。我在编码数据方面遇到了麻烦。尝试发送数据而不将其编码为utf-8会产生此错误(更正:此错误是针对另一个特殊字符,错误!):

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-8编码保存的.csv文件中的数据(这是问题的一部分吗?)

使用.encode('utf-8')和一些试错之后:

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

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

缩短代码示例:

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。

1 个答案:

答案 0 :(得分:1)

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