问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA myEclipse下控制台输入与输出问题

发布网友 发布时间:2022-04-23 06:36

我来回答

2个回答

热心网友 时间:2023-07-01 10:19

首先我描述一下问题,我在做udp socket编程(一个聊天的程序)的时候,从控制台中读取中文,然后再向控制台中打印,出现中文乱码的情况。

1、出现乱码最根本的原因就是编码和解码不一致的情况。问题分析,从控制台中读取数据,数据源为控制台,输出为乱码,目标源也为控制台,但是在读取和输出的过程中有可能出现乱码,

最简单的例子就是控制台上的编码为gbk,gbk是两个字节编码的,而utf-8是三个字节。所以会出现乱码问题,

2、解决办法

(1)打开eclipse或myeclipse,点击run-》runconfigurations

如图提示,改成UTF-8,但是这里强调一下,有的eclipse或myeclipse有可能是gbk的形式,不同形式改成不同的编码,多尝试一下。

这里也需要更改一下。

(2)方法二:

打开eclipse.ini文件(在eclipse的安装目录)  添加上这句话 -Dfile.encoding = utf-8,设置系统属性file.encoding为utf-8.

2、附上我做的一个聊天的小程序,把ip到时候可以改成你想聊天的那个人的ip,两边都要运行这段代码。

package com.hzwealth.test.chat;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/**
* C&D聊天室
* @author lixiaochao
* */public class UdpChatTest {    public static void main(String[] args) {        new Thread(new UdpClientThread()).start();        new Thread(new UdpServerThread()).start();
   }
}/**
* 发送端
* @author lixiaochao
* */class UdpServerThread implements Runnable{

   @Override    public void run() {        try {
           DatagramSocket ds = new DatagramSocket();
           BufferedReader reader = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
           
           String line = null;            while((line = reader.readLine())!= null){
//这里注意,我们需要写上你对话人的ip地址。
               InetAddress address = InetAddress.getByName("你的对话人的ip地址");
               DatagramPacket dp = new DatagramPacket(line.getBytes(), line.getBytes().length, address, 9999);
               ds.send(dp);
               System.out.print("我说:"+line+"\n\r");                if("~over".equals(line)){
                   System.out.println("发送者退出");                    break;
               }
           }
           reader.close();
           ds.close();
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
   
}/**
* 接收端
* @author lixiaochao
* */class UdpClientThread implements Runnable{

   @Override    public void run() {        try {
           DatagramSocket ds = new DatagramSocket(9999);
           System.out.println(System.getProperty("file.encoding"));            while(true){                byte[] buf = new byte[1024];
               DatagramPacket dp = new DatagramPacket(buf, buf.length);
               ds.receive(dp);
               InetAddress address= dp.getAddress();
               String msg = new String(buf, 0, buf.length,"GBK");
               System.out.println(address+"说:"+msg);                if("~over".equals(msg)){                    break;
               }
           }
           ds.close();
       } catch (Exception e) {
           e.printStackTrace();
           
       }
   }
   
}

追问首先谢谢你花时间来看我的问题。
你讲的内容比较深,我是初学者,还没有那么深入的学习。上面的代码输出异常问题是在特定的软件下才出现的,只是怀疑是myEclipse的设置问题,且网络上我也查找了很多的解决办法,基本上都是说控制台输出不支持中文的问题。
另外在cmd下面使用JDK8运行则没有上述问题。

热心网友 时间:2023-07-01 10:19

输出函数也发出来,只发一半很浪费时间的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 梦见喝醉了遇见女人扶 怎么在myeclipse中编写java程序 要操作的过程啊 我可是刚 用java和 myeclipse 梦见自己吞血 Java中eclipse和myeclipse在开发使用的区别? java软件MyEclipse 怎么写的什么程序都运行不了了? 如何在MyEclipse中编译java程序?如何运行java程序? java myeclipse myeclipse中编写java代码的步骤 梦见自己喝多了,是什么意思? 如何使用myeclipse写java程序 Java 用MyEclipse 代码怎么写 myeclipse 中怎么样新建一个java的类的,详细的步骤是什么?谢谢! 在上海哪个侦探公司比较出色? 上海哪里有私家侦探? 华为账号被别人登录有啥后果 彼岸花到底叫曼陀华沙还是曼珠沙华? 彼岸花为什么别名叫曼珠沙华? 有谁知道彼岸花的英文名和简称?急 彼岸花又叫什么花 “彼岸花”是什么意思? java myeclipse的问题 myeclipse的java如何运行 深夜喝酒的内涵句子 我晚上做梦吃梨子代表什么? 如何在MyEclipse中编译java程序,如何运行java程序 蚂蚁窝的作用与功效 蚂蚁窝有什么作用,怎么用 哪一款人物P图手机软件最好用? 怎样自制蚂蚁窝? P图的软件 稿什么设计 p图有卡通人物 是什么p图软件? 蚂蚁在家里做窝咋办? 蚂蚁窝是什么材料做成的 有款P图软件里面有室内人像风景的叫什么 蚂蚁窝有什么作用 电脑开机显示器就闪了一下就黑屏是什么原因? 蚂蚁窝的土可以当水泥吗 什么软件P图好 有什么P图软件,可以把人物轮廓以外的环境全部虚化。 电脑显示屏一闪一闪的然后又黑屏?