使用java实现socket,中文乱码 ,试了utf-8.gbk 依然没有效果

coffee-00 2019-05-14 01:55:19
//客户端
public class SocketClient {
public static void main(String[] args) throws IOException {
//创建客户端,并连接服务器
Socket socket = new Socket("127.0.0.1", 4007);
System.out.println("客户端启动成功");
//获取控制台输入流
InputStreamReader inputStreamReader = new InputStreamReader(System.in, "GBK");
BufferedReader out = new BufferedReader(inputStreamReader);
//通过socket输出流创建write推送功能对象
PrintWriter pw = new PrintWriter(socket.getOutputStream());
while (true) {
//等待控制台不为空的输入流
String str = out.readLine();
if ("".equals(str)) {
break;
}
//通过socket对象将字符串推送到服务器
pw.println(str);
//立刻刷新推送功能对象
pw.flush();
} // 继续循环
pw.close(); // 关闭Socket输出流
socket.close(); // 关闭Socket
}
}


//服务端
public static void main(String[] args) throws IOException {
//创建服务器
ServerSocket server = new ServerSocket(4007);
System.out.println("服务器启动成功");
//等待客户端连接后,接收客户端socket
Socket socket = server.accept();
//获取客户端socket的输入流

InputStreamReader inputStreamReader = new InputStreamReader(socket.getInputStream(), "GBK");
BufferedReader in = new BufferedReader(inputStreamReader);
while (true) {
//等待客户端socket的不为空输入流
String str = in.readLine();
if (str == null) {
break;
}
System.out.println("客户端说:" + str);

}
in.close(); //关闭Socket输入流
socket.close(); //关闭Socket
server.close(); //关闭ServerSocket
}


...全文
1918 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40674493 2019-05-15
  • 打赏
  • 举报
回复
用字节操作,流传输是以字节的形式传输。直接操作字符串,会出现字节不完整的情况,即使是统一编码,在一次的字符串中字节不完整,一样会出现乱码。用byte[]数组接收数据,再让String使用对应的编码格式转换为字符串。
  • 打赏
  • 举报
回复
为什么我运行上面的代码 没有问题
Unicode Escapes 2019-05-14
  • 打赏
  • 举报
回复
各自修行 2019-05-14
  • 打赏
  • 举报
回复
你的system.in在哪里输入的 把输入的控制台的编码改成GBK应该就可以了
一般的俗 2019-05-14
  • 打赏
  • 举报
回复
引用 4 楼 石小欣0504 的回复:
[quote=引用 3 楼 一般的俗 的回复:]
服务端和客户端都设置utf-8了吗


服务端和客户端设置的目前都是GBK,也试过UTF-8 都是乱码 [/quote]
你的编译器默认是什么编码格式呢,我idea默认UTF-8,socket设置成utf-8是不会乱码的
coffee-00 2019-05-14
  • 打赏
  • 举报
回复
引用 3 楼 一般的俗 的回复:
服务端和客户端都设置utf-8了吗
服务端和客户端设置的目前都是GBK,也试过UTF-8 都是乱码
一般的俗 2019-05-14
  • 打赏
  • 举报
回复
服务端和客户端都设置utf-8了吗
coffee-00 2019-05-14
  • 打赏
  • 举报
回复
大神都在哪里呢???
coffee-00 2019-05-14
  • 打赏
  • 举报
回复
自己顶啊!!!

50,529

社区成员

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

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