我正在编写一个简单的客户端/服务器程序。基本上,客户端将查询字符串发送到服务器,服务器也以字符串的形式发回答案。服务器使用基于套接字的boost / asio库用C ++编写。服务器是在Linux机器上编写的(Fedora 25)。客户端是用Java编写的。一切正常,除非我在Windows机器上安装客户端时发现查询字符串(中文)在服务器端出现乱码。客户端也在Linux上时没有这个问题。
socket = new Socket(host, port);
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(inputStr);
resultStr = in.readLine();
以上是客户端部分的java代码。用于接收查询字符串的服务器C ++代码是:
ProcessRequest(asio::streambuf& request){
std::string input = to_string(request);
std::cout << input << std::endl;
...
在这里,我注意到当客户端从Windows机器运行时,收到的中文查询字符串都是垃圾。
同样,当客户端从Linux机箱运行时,没问题。