我在程序中调用一个接口函数,这个函数返回的是用UTF-8编码的字符串,而我整个程序的输入输出都用的是GB18030,只能用GB18030输出。如果直接输出会有乱码,想知道如何正确输出。
PrintWriter os=new PrintWriter(new FileOutputStream("E:\\commonPart30000\\nothingresult\\InvdResult.txt",true));
os 用这个方法声明行吗?之后使用os.write(),
还有os.write()和os.println()能交替往一个文件中写入吗?
println会以“默认字符集”打印。在win下很可能是GBK,虽然和GB18030兼容,但毕竟不完全一样。
所以直接用FileOutputStream的write(byte []);
fos.write(str.getBytes("GB18030"));//这样获得最准确的GB18030文本。
另, 用new PrintWriter(File , "GB18030")指定编码后,才可以println;
FileOutputStream fos = new FileOutputStream("E:\\abtractResult.txt",true);
fos.write(abtract.getBytes("GB18030"));
abtract 就是返回的"UTF-8"编码,这样输出还是乱码啊?
先显示一下
System.out.println(abtract);//控制台如果乱,说明abtract读入时就已经乱了
fos.write(abtract.getBytes("GB18030"));