Robot 프레임 워크를 사용하여 HTTP POST 관련 테스트를 자동화하고 있습니다. HTTP POST를 수행하는 함수가있는 사용자 정의 Python 라이브러리를 작성했습니다. 다음과 같이 보입니다.Python 함수의 디코딩 오류
# This function will do a http post and return the json response
def Http_Post_using_python(json_dict,url):
post_data = json_dict.encode('utf-8')
headers = {}
headers['Content-Type'] = 'application/json'
h = httplib2.Http()
resp, content = h.request(url,'POST',post_data,headers)
return resp, content
유니 코드 문자를 사용하지 않는 한 정상적으로 작동합니다. 내가 (예를 들어, 메시지)를 json_dict
변수에 유니 코드 문자가있는 경우,이 오류와 함께 실패합니다
UnicodeDecodeError: 'ascii' codec can't decode byte 0xeb in position 164: ordinal not in range(128)
내가 몇 가지 관련 질문을보고 윈도우 7에 파이썬 2.7.3을 실행하고,하지만 난하지 않은 문제를 해결할 수있었습니다. 필자는 파이썬과 프로그래밍에 익숙하지 않으므로 도움을받을 수 있습니다.
감사합니다.
* 전체 * 추적을 포함하십시오. –
post_data = unicode (json_dict, encoding = "utf-8")를 사용해 보셨습니까? 인코딩/디코딩/구문 분석이 어떻게 작동하는지 명확하게 밝히지는 않았지만 (이것이 이유이며 대답이 아닙니다) 어쩌면 도움이 될 것입니다 ... – BorrajaX
@BorrajaX'unicode (json_dict, encoding = "utf- 8 ")'은 OP가 원하는 것의 정반대가 될 것입니다. 그들은''유니 코드가 아닌''str '을 원합니다. –