为System.out指定字符编码

System.out是PrintStream类型的,它是一个Stream,是面向字节的,所以无编码一说。那么怎么办呢?方法就是利用 OutputStreamWriter 这个类,把Stream转换成Writer

PrintWriter fileout; 
try { 
fileout = new PrintWriter(new OutputStreamWriter(System.out, 
destEncoding)); 
} catch (UnsupportedEncodingException ex) { 
logger.error("不支持编码" + destEncoding + "\n" 
+ ex.getLocalizedMessage()); 
return; 
}

嗯,还有,java中一定要去显式的关闭Stream等等。拿PrintWriter来说,用write输出的东西,并不一定会立刻输出到设备上,所以在执行完最后一次输出后一定要调用一次flush。而close方法会去调用flush,所以每次用完后不要偷懒忘记close。
而C++标准库中的stream不是这样,用完了就用完了,不用理会它。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥