我正在编写一个简单的客户端/服务器程序。基本上,客户端向服务器发送一个查询字符串,服务器也以字符串的形式发回一个答案。服务器使用基于套接字的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机器运行时,没有问题。
你在用什么编码发送数据? 'UTF-8'? – Galik