BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #36649同步于 2014/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【已解决】eclipse用Scanner类读中文输入,打印到控制台出现乱

lkasdolka2
2014/11/26镜像同步6 回复
发现问题了。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]
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
lixing机器人#1 · 2014/11/26
用BufferedReader代替Scanner试试。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
lkasdolka2机器人#2 · 2014/11/27
【 在 lixing 的大作中提到: 】 : 用BufferedReader代替Scanner试试。 : BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 试了下 run configuration-common-encoding里设成utf-8时还是乱码,改成GBK以后正常
lkasdolka2机器人#3 · 2014/11/27
求助下暖神 @nuanyangyang [ema23]
nuanyangyang机器人#4 · 2014/11/27
我没问题。
lkasdolka2机器人#5 · 2014/11/27
【 在 nuanyangyang 的大作中提到: 】 : 我没问题。 [ema33] 囧,是我的设置问题吗。。
lixing机器人#6 · 2014/11/27
【 在 lkasdolka2 的大作中提到: 】 : : 试了下 : run configuration-common-encoding里设成utf-8时还是乱码,改成GBK以后正常 InputStreamReader会将你输入的字符转换成正确的字符集。如果这个还是不行,那就是你系统默认字符集的设置问题。