java中如何将UTF-8编码的字符串使用GB18030输出?

我在程序中调用一个接口函数,这个函数返回的是用UTF-8编码的字符串,而我整个程序的输入输出都用的是GB18030,只能用GB18030输出。如果直接输出会有乱码,想知道如何正确输出。

java 很方便进行这种转换
如果输入是UTF8的字节用
String s=new String(utf8_bytes, "UTF-8"); //utf8_bytes为byte[]类型
如果输入是字符串,直接
String s=原返回。

在输出是转换gb18030,不输出时不用转换。
os.write(s.getBytes("GB18030")); //os为输出流追问

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"));

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-19
这应该是web中的吧?难道是控制台?
相似回答