2012-02-02 81 views
2

我有一个奇怪的问题。我在Java中有这样的代码:特殊字符输入错误

Scanner keyboard = new Scanner(System.in); 
System.out.print("Enter word: "); 
String word = keyboard.nextLine(); 
System.out.println(word); 

但是,对于特殊字符,扫描仪类似乎出错了。例如,如果我输入ħabel,则会得到ħabel打印。 Eclipse的控制台输出设置为UTF-8,相信这一点,所以我认为它来自输入。我还没有在Scanner类中找到任何编码选项,并且有趣的是,Google并没有给出解决方案。这怎么能解决?

谢谢!

+0

什么是特殊你用过的字符? – kosa 2012-02-02 15:49:36

回答

2

当您在裸露的InputStream上设置Scanner时,它会使用默认字符集(您似乎是ASCII)进行读取。如果要指定字符集,这样做:

Scanner keyboard = new Scanner(new InputStreamReader(
        System.in, Charset.forName("UTF-8"))); 
+0

谢谢罗素,虽然没有工作,但... – 2012-02-02 15:29:35

+1

这个问题可能会有所帮助:http://stackoverflow.com/questions/8669056/unicode-input-in-a-console-application-in-java – 2012-02-02 16:02:45

+0

正如在上面的问题,Windows中的控制台输入似乎不适用于特殊字符。我恢复到从文件读取输入。谢谢罗素 – 2012-02-03 07:57:22

0

我相信罗素的答案是正确的,但似乎你输入字符集不UTF-8 试试这个: Scanner s= new Scanner(new InputStreamReader(System.in,Charset.defaultCharset()));