我正在嘗試使用simplejson和Json.NET在Python服務器和C#客戶端之間建立一個非常基本的基於ZeroMQ的套接字鏈接。 我嘗試從Python發送一個字典並將其讀入C#中的一個對象。 Python代碼:從Python到C#的套接字消息通過亂碼出現
message = {'MessageType':"None", 'ContentType':"None", 'Content':"OK"}
message_blob = simplejson.dumps(message).encode(encoding = "UTF-8")
alive_socket.send(message_blob)
的消息被作爲正常UTF-8字符串,或者,如果我使用UTF-16,爲「'\ XFF \ XFE {\ X00 「\ X00 ...」 等
代碼在C#是我的問題是:
string reply = client.Receive(Encoding.UTF8);
的UTF-8的消息被接收爲「≻潃瑮湥≴> ...」等
我試圖用UTF-16並且消息通過確定,但是第一個符號仍然是little-endian \ xFF \ xFE BOM所以,當我嘗試將其提供給解串器,
PythonMessage replyMessage = JsonConvert.DeserializeObject<PythonMessage>(reply);
//PythonMessage is just a very simple class with properties,
//not relevant to the problem
我得到一個錯誤(顯然發生在第一個符號,\ XFF):
Unexpected character encountered while parsing value: .
東西是在我的方式顯然是錯誤的m使用編碼。你能告訴我正確的做法嗎?
您是否嘗試發送一個簡單的字符串,而不是字典?那工作? – raffian
如果我像編碼轉儲()的結果一樣對它進行編碼,那就是一樣的。 –
這是什麼'Receive'方法? Socket.Receive是否只接受字節數組?什麼是'客戶端'? – Joni