java - 是什么导致了Eclipse控制台中文乱码
怪我咯
怪我咯 2017-04-17 17:21:58
0
0
244

今天写了一个通过控制台和程序交互的程序(eclipse控制台编码格式为utf-8).理想化打印内容和输入内容是一样的.实际上出现了乱码.
在百度上找到了解决方法,在eclipse.in配置-Dfile.encoding=utf-8就可以了.问题解决了,但还是想分析下原因,
猜想结果如下图:

public void test() throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in,"UTF-8")); String indexDir = SearcherTest.class.getResource("/document").getPath(); System.out.println("IndexDir: " + indexDir); while(true){ System.out.println("Enter queryString: "); String queryString = reader.readLine(); //这里"月回到"已经变为"鏈堝洖鍒�" 15个字节 System.out.println(queryString.getBytes().length); // printHexString(queryString.getBytes("UTF-8")); System.out.println(queryString); if("-Dquit".equals(queryString)){ break; } Searcher.search(indexDir, queryString); } System.out.println("Bye"); }

控制台内容:

Enter queryString: 月回到 字符串字节长度: 15 QueryString: 鏈堝洖鍒�

简单来讲就是jvm在某个环节将 输入内容用GBK编码后导致最后输出内容乱码.
但现在搞不明白是哪个环节发生了GBK编码.从代码中可以看出在readline之后就已经乱码.在控制台传送输入内容到system.in readLine之间还有什么环节么?这个是我想问的

怪我咯
怪我咯

走同样的路,发现不同的人生

reply all (0)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!