首先感谢 http://blog.csdn.net/amazingrace/article/details/8794088
说重点:
项目:
服务器c++,使用多语言字符集,默认GBK,直接用socket处理网络连接,自行解析http消息(消息真的很少,工作量不大),
客户端java,使用http,消息格式用json。
问题:
客户端上传数据给服务器,消息中有中文,服务器接收数据,并记录下来,然而,每次服务器收到的数据,都是“????”一堆问号。
解决过程:
说起来简单,可实际解决起来,却花了不少时间,因为做客户端的程序不熟悉c++,做服务器的程序不熟悉java,好吧,很无奈!!
1、上网查,大多说是编码问题,说java转码就好了name=new String(name.getBytes("ISO-8859-1"),"GBK");实际测试,服务器接收到的还是乱码。
2、服务器进行解码,java默认使用unicode,所以在服务器使用unicode解码,结果还是乱码。然后客户端再使用UTF8,服务器使用UTF8解码,还是乱码。
3、各种编码格式测试,结果还是没办法接收到正确的内容。
4、服务器把接收到的数据用十六进制格式按字节输出,发现输出的结果也不正常,不是想要的数据,因为时间较紧张,所以没有再仔细分析了。
5、最后找到上面那个博客,发现还需要单独对json数据进行编码!!!修改后测试结果正常!服务器接收到的数据直接输出到一个文件就可以了。
这就是一个不懂java的人遇到的一个悲剧!