Eclipse中scanner类输入中文会把拼音也输出的问题。

我相信不止我一个遇到这样的问题。


代码块:

//输出端
package TCP;

import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class TCP_send {
	public static void main(String[] args) throws Exception {
		
		Socket s = new Socket("192.168.2.1", 7890);
		System.out.println("创建输出端");
		OutputStream output = s.getOutputStream();
		Scanner scanner = new Scanner(System.in);
		String str = null;
		
		while(true) {
			System.out.println("please input an word");
			str = scanner.nextLine();
			//当输入end的时候,结束发送,跳出死循环,关闭socket
			if(str.equals("end")) {
				break;
			}
			output.write(str.getBytes());
		}
		
		s.close();
	}
}
//接收端
package TCP;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCP_recieve {
	public static void main(String[] args) throws Exception {
		

		ServerSocket ss = new ServerSocket(7890);
		Socket client = ss.accept();
		System.out.println("接收到一个客户端的连接");
		
		InputStream input = client.getInputStream();
		byte[] buf = new byte[1024];

		//循环判断length是否为-1,也就是判断发送端是否已经被关闭了。
		int length =-1;
		while((length = input.read(buf)) != 1) {
			System.out.println(new String(buf, 0, length));
		}
		
		client.close();
		ss.close();
	}
}

问题:

  • 我们首先在输入端中输入第一个句子
    a
  • 接收端接收成功,而且就是我们输出的内容
    在这里插入图片描述
  • 接着我们继续输出
    在这里插入图片描述
  • 这一次的输出一定会出错
    在这里插入图片描述
  • 我们发现我们通过拼音输出的中文会变成一串很奇怪的东西
    在这里插入图片描述

解决方案:

  • 经过我的调查,这种错误的起因是因为控制台输入中文的时候eclipse光标的没有自动换行到下一行所导致的。英文输出则会自动换行,目前唯一的解决方法就是手动将光标下移后再输入,这是eclipse一个令人恶心又没有解决方式的bug!
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值