내 시스템은 복잡한 프로세스의 핵심 역할을하는 C++ 주요 부분으로 구성됩니다. 이 코어는 여러 작업을 수행 한 다음 HTML 기술을 기반으로 그래픽 사용자 인터페이스에 표시하는 Python 스크립트를 실행하는 작업을 담당합니다. 이 HTML 문서는 WTL을 사용하여로드되지만 파이썬에서 생성 된 정보가 그 지점에 도달하기 전에 내 문제가 발생하기 때문에 관련이 없습니다. Python으로 좋은 JSON 문자열을 생성하는 경우
import json
#my_python_dict is the Python dictionary information I want to send to C++ -> Javascript.
json_str = json.JSONEncoder().encode(my_python_dict)
은 그 때 나는 적절한 API 호출을 사용하여 C++이 정보를 보내 API_Call 파이썬에서 생성 된 문자열을 실행하고 반환하는 방법이다. 내가 그 라인을 실행하면
PyObject *json_string;
json_string = API_Call();
char * c_str;
c_str = PyString_AsString(json_string);
나는 이상한 문자와 깨진 데이터를 얻을 나는이 파이썬에서 원래의 코드를 대체 할 경우 반면 :
import json
#my_python_dict is the Python dictionary information I want to send to C++ -> Javascript.
#json_str = json.JSONEncoder().encode(my_python_dict).
json_str = "This is a dummy test... of random lenght..."
그것은, 내가 말을 단지 완벽 감히 작품 문제는 아마도 json.JSONEncoder() 또는 json.JSONEncoder 및 PyString_AsString() 내의 코딩 문제 일 수 있습니다.
아이디어가 있으십니까?
====================== P.D. ====================
나는 몇 가지 아이디어를 순서대로 시도해왔다. 이 문제를 해결하려고합니다.
- 가장 충격적인 내용은 다음과 같습니다. 디버그 콘솔에서 인코딩 된 문자열을 복사하여 더미 문자열에 붙여 넣은 다음 해당 문자열을 반환하면 모든 것이 정상적으로 작동합니다. 하지만 json.JSONEncoder의 출력이 필요합니다.
파이썬 코드에서'json_str' (또는'my_python_dict')을 로깅 해 보셨습니까? –
예. 나는 심지어 파이썬 콘솔에서 json_string을 인쇄하려고 시도했고 콘솔의 출력을 더미 테스트 문자열로 대체하여 완벽하게 작동했습니다. –
https://docs.python.org/2/library/json.html#json.JSONEncoder 에는 비 ASCII 문자 이스케이프에 대한 몇 가지 인수가 있습니다. 이러한 옵션을 변경해 보셨습니까? 또한 json.dumps (my_python_dict)를 사용해 보셨습니까? – gosom