java socket网络编程服务器接收客户端中文字符乱码问题

allenspeaker 2013-07-15 12:48:47
小弟最近在编写一个服务器以及客户端程序,客户端程序置于android手机。但是在调试过程中发现服务器在接收客户端所发送中文字符时候,当中文字符个数是偶数的时候,可以正常显示,但是当中文字符个数为奇数时候,最后一个中文字符是乱码,显示为“??”两个问号。客户端和服务器通过TCP通信,用的socket管道。请各位大神,给予指点。谢谢谢谢。。
...全文
650 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
allenspeaker 2013-07-17
  • 打赏
  • 举报
回复
引用 7 楼 WSM6591289 的回复:
客户端加码
String str = URLEncoder.encode("我们是好朋友", "utf-8");
,服务端再解码
URLDecoder ud = new URLDecoder();  
        System.out.println(ud.decode(str, "utf-8"));
谢谢 大神指点,这几天在外面忙,一直没时间来看,回复晚了。采纳了您的意见后果然可以了。在次感谢。
WSM6591289 2013-07-15
  • 打赏
  • 举报
回复
客户端加码
String str = URLEncoder.encode("我们是好朋友", "utf-8");
,服务端再解码
URLDecoder ud = new URLDecoder();  
        System.out.println(ud.decode(str, "utf-8"));
WSM6591289 2013-07-15
  • 打赏
  • 举报
回复
试试这个
String str = URLEncoder.encode("我们是好朋友", "utf-8");
		URLDecoder ud = new URLDecoder();  
        System.out.println(ud.decode(str, "utf-8"));
allenspeaker 2013-07-15
  • 打赏
  • 举报
回复
今天在调试过程中,小弟将客户端的要经过socket发送的数据按二进制的形式一个字节一个字节的打印出来并且也将服务器的接收数据按二进制打印出来,经对比,发现客户端和服务器上的数据完全相同,不存在丢字节加字节的情况,但是为什么就是在接收偶数个中文时候能正常显示,奇数个中文时候却是最后一个字显示为“??”。请各位大神,指教,小弟急需解决方案。谢谢了。
  • 打赏
  • 举报
回复
这应该是char和byte之间转换造成的的。用new String(xxx.getBytes("iso-8859-1"),"utf-8")包装一下看看
allenspeaker 2013-07-15
  • 打赏
  • 举报
回复
引用 3 楼 fangmingshijie 的回复:
传输byte字节,不要传输字符串就没事了。
我客户端传的是byte数字,服务器用String读出来。这样没问题的吧。
  • 打赏
  • 举报
回复
传输byte字节,不要传输字符串就没事了。
allenspeaker 2013-07-15
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
这应该是char和byte之间转换造成的的。用new String(xxx.getBytes("iso-8859-1"),"utf-8")包装一下看看
我之前就是这么写的还是不行,遇到这个很郁闷,奇数偶数个中文会有问题。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧