问一个Java Socket编程问题

KyKiske22 2015-12-25 03:08:31
发送端:
public class UDPSend {
public static void main(String[] args) throws IOException {
DatagramSocket ds =new DatagramSocket();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//输入数据
String line=null;
while((line=br.readLine())!=null)
{
if("886".equals(line))
{
break;
}
byte[] b=line.getBytes();
DatagramPacket dp=new DatagramPacket
(b,b.length,InetAddress.getByName("192.168.252.1"),3303);
ds.send(dp);
}
ds.close();
}
}
接收端:
public class UPDReceive {
public static void main(String[] args) throws IOException {
DatagramSocket ds=new DatagramSocket(3303);
while(true)
{
byte[] b=new byte[1024];
DatagramPacket dp=new DatagramPacket(b,b.length);
ds.receive(dp);
String ip=dp.getAddress().getHostAddress();
String s=new String(dp.getData(),0,dp.getLength(),"UTF-8");
System.out.println("ip:"+ip+",字符串:"+s);
}
}
}
结果我在发送端输入"你好“,接收端的结果是:ip:192.168.252.1,字符串:浣犲ソ
字符串的内容并没有转码。我这个项目的Text file encoding属性也设置成UTF-8了
为什么结果没有转码呢???求大神解答。。
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
三仙半 2015-12-27
  • 打赏
  • 举报
回复
哦,咱们的操作系统默认是GBK编码,那么从控制台收到的信息就是GBK的,是不是这个道理?
KyKiske22 2015-12-25
  • 打赏
  • 举报
回复
引用 1 楼 zys59 的回复:
byte[] b=line.getBytes();
改成
byte[] b=line.getBytes("UTF-8");
试试
改过了,没用。中文还是那个结果
KyKiske22 2015-12-25
  • 打赏
  • 举报
回复
引用 1 楼 zys59 的回复:
byte[] b=line.getBytes();
改成
byte[] b=line.getBytes("UTF-8");
试试
改成GBK就成功了
三仙半 2015-12-25
  • 打赏
  • 举报
回复
byte[] b=line.getBytes();
改成
byte[] b=line.getBytes("UTF-8");
试试

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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