返回信息流发现问题了。win7系统默认设置的Unicode编码为“简体-中文”,猜测应该是GB2312或者是GBK,然后尝试将其转换为UTF-8再打印。
代码:
Scanner sc = new Scanner(System.in);
if(sc.hasNext()){
while(sc.hasNext()){
String string = new String(sc.next().getBytes("GBK"),"utf-8");
System.out.println(string);
}
}else{
System.out.println("no input");
}
---------------------------------------------------------------
很简单的一段代码:
Scanner sc = new Scanner(System.in);
if(sc.hasNext()){
while(sc.hasNext()){
System.out.println(sc.next());
}
}else{
System.out.println("no input");
}
我的设置是:Preferance->general->workspace->text file encoding里和Run As->run configuration->common->encoding里的编码都设的utf-8,这样读取中文输入再打印到控制台会出现乱码。奇怪的是如果把run configuration 里边的encoding改成GBK,乱码现象就消失了。
我觉得可能是在哪一步里unicode被编码成了了GBK,然后用UTF-8解码就出现了乱码,求大神解释一下
[ema23][ema23][ema23]
这是一条镜像帖。来源:北邮人论坛 / java / #36649同步于 2014/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【已解决】eclipse用Scanner类读中文输入,打印到控制台出现乱
lkasdolka2
2014/11/26镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
用BufferedReader代替Scanner试试。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
【 在 lixing 的大作中提到: 】
: 用BufferedReader代替Scanner试试。
: BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
试了下
run configuration-common-encoding里设成utf-8时还是乱码,改成GBK以后正常
【 在 lkasdolka2 的大作中提到: 】
:
: 试了下
: run configuration-common-encoding里设成utf-8时还是乱码,改成GBK以后正常
InputStreamReader会将你输入的字符转换成正确的字符集。如果这个还是不行,那就是你系统默认字符集的设置问题。