当前位置:编程学习 > JAVA >>

新手请教乱码问题~

今天运行《 java 开发技术大全》第 7.6.1 节 控制台输入类 Scanner 的示例 7.11 时,控制台输出的姓名(见代码)总是乱码,查了很多文章,多数是win平台下默认 gbk 编码的,想来想去也想不明白,特请教下!
mac 平台,系统默认编码 utf-8,eclipse 4.2:workspace - text file encoding: utf-8,控制台encoding 继承workspace也是utf-8。
import java.util.*;
public class UseScanner {
public static void main(String argv[]) {
Scanner in = new Scanner(System.in);
System.out.print("请输入你的姓名:");
String name = in.nextLine();
System.out.print("请输入你的年龄:");
int age = in.nextInt();
System.out.print("请输入你的身高(单位:米):");
double height = in.nextDouble();
System.out.println("姓名:" + name + " 年龄:" + age + " 身高:" + height + "米");
in.close();
}
}

输出结果:
请输入你的姓名:大李子
请输入你的年龄:48
请输入你的身高(单位:米):1.76
姓名:��������� 年龄:48 身高:1.76米
--------------------编程问答-------------------- 我自己运行你的程序是正常的,完全没有问题,有可能是系统以及运行环境配置不一样。

我把 Scanner in = new Scanner(System.in);
换成
Scanner in=new Scanner(System.in,"utf-8");
结果是乱码的。
但是这样,Scanner in=new Scanner(System.in,"gbk");
或者是Scanner in=new Scanner(System.in,"gb2312");
都可以正常输出。

你要不要设定一下编码方式  试试看。 --------------------编程问答-------------------- 进入Window/Preferences进行配置 
General/Content Types
点开右边有个Text进行配置
首先把CSS,DTD,Html,Java Source File,JavaScript Source File都设为UTF-8
然后点开JSP
把JSP,CSS JSP,JSP Fragment,Jsp Tag Definitoion设为UTF-8
在然后把Runtime log file设为GBK
能解决你很多乱码问题。
试试吧 --------------------编程问答--------------------
引用 1 楼 dgcxyc 的回复:
我自己运行你的程序是正常的,完全没有问题,有可能是系统以及运行环境配置不一样。
……
谢谢回复。试过了,没有用的。 --------------------编程问答--------------------
引用 2 楼 l498811450 的回复:
进入Window/Preferences进行配置……
试过了,不起作用,谢谢! --------------------编程问答-------------------- 把接收的name用name.getbytes("ISO-8859-1"),"GBK")试试 --------------------编程问答-------------------- String str=new String(name.getbytes("ISO-8859-1"),"GBK"); --------------------编程问答--------------------
引用 6 楼 devenzeng 的回复:
String str=new String(name.getbytes("ISO-8859-1"),"GBK");
也不行。现在的乱码变成?????????了。发现个规律:每个汉字对应3个乱码。怀疑是不是这个新版 eclipse 的问题?! --------------------编程问答-------------------- 应该是环境的问题,还有,mac的平台没有玩过- -! --------------------编程问答-------------------- 在 NetBeans 7.2 也运行了,结果也是乱码 --------------------编程问答-------------------- 我本地测试了一下,GBK、UTF-8都没有出现乱码问题。估计还是环境问题。。。 --------------------编程问答-------------------- 我把这行代码:
Scanner in = new Scanner(System.in);
改成如下:
Scanner in = new Scanner("汉字\n3\n1\n");
就能正确输出“汉字”二个字,不知这能说明什么问题?难道Scanner从键盘读入时没有使用默认UTF-8编码?

引用 10 楼 hucp2007 的回复:
我本地测试了一下,GBK、UTF-8都没有出现乱码问题。估计还是环境问题。。。
--------------------编程问答-------------------- 在 mac 的终端单独测试了一下,结果正常!!!
说明 eclipse 4.2 有问题?可是在 NetBeans 7.2 下也是乱码,它也有问题?
感觉上还是 xcode 严谨些,毕竟是 Mac 的本土产品。
还是等高手来阐明一下吧! --------------------编程问答-------------------- 终于查到点线索,似乎是一个 bug:
http://www.eclipse.org/forums/index.php/m/887199/?srch=console+messy+code#msg_887199
可能在 mac 平台下和 4.2 版本中存在这个问题。
--------------------编程问答-------------------- 你的开发工具的编码没改吧,都改成utf-8的,就行了。 --------------------编程问答-------------------- 我的电脑上试过没问题,估计是你MyEclipse版本的问题 --------------------编程问答-------------------- 在 软件 窗口-首选项-内容类型更改编码,我也遇到过这样的问题
补充:Java ,  Eclipse
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,