java中如何将UTF-8编码的字符串使用GB18030输出?
我在程序中调用一个接口函数,这个函数返回的是用UTF-8编码的字符串,而我整个程序的输入输出都用的是GB18030,只能用GB18030输出。如果直接输出会有乱码,想知道...
我在程序中调用一个接口函数,这个函数返回的是用UTF-8编码的字符串,而我整个程序的输入输出都用的是GB18030,只能用GB18030输出。如果直接输出会有乱码,想知道如何正确输出。
展开
2个回答
展开全部
java 很方便进行这种转换
如果输入是UTF8的字节用
String s=new String(utf8_bytes, "UTF-8"); //utf8_bytes为byte[]类型
如果输入是字符串,直接
String s=原返回。
在输出是转换gb18030,不输出时不用转换。
os.write(s.getBytes("GB18030")); //os为输出流
如果输入是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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询