java socket通讯中文乱码问题

java socket通讯中文乱码问题话不多说上代码publicvoidrun(){//客户端一连接就可以写数据给服务器了newsendMessThread().start();super.run();try{//读Sock里面的数据InputStreams=socket.getInputStream();byte[]buf=newbyte[1024];

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

话不多说上代码

 public void run() { 
   
        //客户端一连接就可以写数据给服务器了
        new sendMessThread().start();
        super.run();
        try { 
   
            // 读Sock里面的数据
            InputStream s = socket.getInputStream();
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = s.read(buf)) != -1) { 
   
                System.out.println(getdate() + " 服务器说: "+new String(buf, 0, len,"UTF-8"));
            }
        } catch (IOException e) { 
   
            e.printStackTrace();
        }
    }

可以很明显的看到,我在进行读服务器发送的信息时,我的编码集为UTF-8,直接将UTF-8改为GBK

 public void run() { 
   
        //客户端一连接就可以写数据给服务器了
        new sendMessThread().start();
        super.run();
        try { 
   
            // 读Sock里面的数据
            InputStream s = socket.getInputStream();
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = s.read(buf)) != -1) { 
   
                System.out.println(getdate() + " 服务器说: "+new String(buf, 0, len,"GBK"));
            }
        } catch (IOException e) { 
   
            e.printStackTrace();
        }
    }

接下来是写的操作同等原理


            super.run();
            //写操作

            Scanner scanner=null;
            OutputStream os= null;
            try { 
   
                scanner=new Scanner(System.in);
                os= socket.getOutputStream();
                String in="";
                do { 
   
                    in=scanner.next();
                    os.write((""+in).getBytes("GBK"));
                    os.flush();
                } while (!in.equals("bye"));
            } catch (IOException e) { 
   
                e.printStackTrace();
            }
            scanner.close();
            try { 
   
                os.close();
            } catch (IOException e) { 
   
                e.printStackTrace();
            }
        }

至于为什么这么写是因为网上发现有帖子说:“在服务端默认的编码情况下,JAVA的SOCKET接收需要GBK编码,而C#的接收需要UTF-8编码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158340.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月26日 下午8:46
下一篇 2022年7月26日 下午8:46


相关推荐

  • 等保和密评之间的关系

    等保和密评之间的关系没有网络安全就没有国家安全 没有信息化就没有现代化 网络安全和信息化是一体之两翼 驱动之双轮 随着 5G 大数据 云计算 人工智能 工业互联网 物联网等新一代信息技术的发展 网络空间与物理空间被彻底打通 网络空间成为继 陆海空天 之后的第五大战略空间 愈演愈烈的网络攻击已经成为国家安全的新挑战 为保障网络空间安全 我国网络安全法治建设持续推进 网络安全法 密码法 等多部法律已颁布实施 个人信息保护法 数据安全法 加速制定中 网络空间不再是 法外之地 在 网络安全法 中明确规定国家实行网络安

    2026年3月17日
    2
  • 编译安装单机版Redis6

    编译安装单机版Redis6

    2021年5月15日
    102
  • PyCharm专业版的安装[通俗易懂]

    PyCharm专业版的安装[通俗易懂]本教程只适合Windows1.首先到官网下载PyCharm专业版:http://www.jetbrains.com/pycharm/download/#section=windows2.双击打开后开始安装这里选择你所安装的目录这里选择创建桌面快捷方式以及关联.py文件静静等待安装:这里选择运行PyCharm 然后单机Finish:

    2022年8月27日
    6
  • AutoEventWireup属性

    AutoEventWireup属性aspx页面第一行page指令中包含了一个AutoEventWireup属性2008-09-1417:15使用Asp.NET时,新建的aspx页面第一行page指令中包含了一个AutoEventWireup属性。网上的很多教程认为这一属性,甚至这一行代码都是没用的。其实,这是不了解Asp.NET事件处理模型的表现。简单来说,这一属性决定了当前页是否自动关联某些特殊事件。…

    2022年5月8日
    42
  • 【分布式事务】GitHub上分布式事务框架压测性能对比

    【分布式事务】GitHub上分布式事务框架压测性能对比一、前言      随着项目逐步以微服务开发为趋势,逐渐呈现一个服务对应一个数据库。从中产生了分布式事务的问题:一个操作先后调用不同的服务,要保证服务间的事务一致性,这就是分布式事务解决的问题。     &am

    2025年8月20日
    4
  • Linux磁盘挂载

    Linux磁盘挂载一 挂载 U 盘 1 插入 U 盘 打开 Linux 终端 2 输入命令 sudofdisk l 从返回结果中可查看 U 盘分区名称 比如 sdb3 输入命令 sudomount dev sdb mnt4 输入命令 cd mnt 即可进入 U 盘二 新增磁盘挂载 1 查看新增磁盘的分区名 sudofdisk l 比如 dev sdb2 对硬盘进行分区 sudofdisk dev sdb 输入参数 m 显示帮助可不输

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号