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

今天写了一个通过控制台和程序交互的程序(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之间还有什么环节么?这个是我想问的

怪我咯
怪我咯

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

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!