请问怎么用BufferedOutputStream中的write方法往XML文件中写入UTF-8编码字符串?(编码问题)

时间:2023-01-10 22:22:23
private static void appendToFile(BufferedOutputStream fos, String str)
throws IOException {

         fos.write(newStr.getBytes("UTF-8"));
}
上面是我写的一段程序,想往一个XML文件中写字符串。程序是运行在Linux上的,不知道与Windows上的有没有差别?上面的str是从sybase数据库中取出的。现在就是想把str以UTF-8编码写入XML文件。我试了半天发现这里编码的转换还是有问题,如果写入的XML文件中的str是中文,则会乱码。不知道哪位有这方面的经验,请指教!!!

6 个解决方案

#1


fos.write(newStr.getBytes("gb2312"));试试

#2


这样试试:

OutputStream out = new FileOutputStream("filename");
OutputStreamWriter writer = new OutputStreamWriter(out,"UTF-8");

#3


这样开销太大。
我不能在这个方法里新建一个对象,
因为数据量比较的大。
估计这样客户会把我给砍了的,
还有别的方法吗?
谢谢了!

#4


fos.write(newStr.getBytes("gb2312"))这样是也是有问题的。
fos.write(newStr.getBytes())这种方式写汉字都能显示正常。
但这样方式输出的是gb2312方式的编码,
我需要的是UTF-8的编码。
汉字编码的问题真是头疼啊!

#5


fos.write(newStr.getBytes("gb2312"))
fos.write(newStr.getBytes("GBK"))
我都试过了,都是乱码。
在UltraEdit中看,那些汉字都变成问号了,
而且ASCII码也是3F,真是郁闷!

#6


因为你的是在linux上的,所以问一下你是用什么工具看的,然后知道是乱吗?

是不是你的语言环境要设置啊?换成一个utf的看看
比如我知道hp上如果文件编码是utf8但是语言环境不是utf的,那也看是乱吗

#1


fos.write(newStr.getBytes("gb2312"));试试

#2


这样试试:

OutputStream out = new FileOutputStream("filename");
OutputStreamWriter writer = new OutputStreamWriter(out,"UTF-8");

#3


这样开销太大。
我不能在这个方法里新建一个对象,
因为数据量比较的大。
估计这样客户会把我给砍了的,
还有别的方法吗?
谢谢了!

#4


fos.write(newStr.getBytes("gb2312"))这样是也是有问题的。
fos.write(newStr.getBytes())这种方式写汉字都能显示正常。
但这样方式输出的是gb2312方式的编码,
我需要的是UTF-8的编码。
汉字编码的问题真是头疼啊!

#5


fos.write(newStr.getBytes("gb2312"))
fos.write(newStr.getBytes("GBK"))
我都试过了,都是乱码。
在UltraEdit中看,那些汉字都变成问号了,
而且ASCII码也是3F,真是郁闷!

#6


因为你的是在linux上的,所以问一下你是用什么工具看的,然后知道是乱吗?

是不是你的语言环境要设置啊?换成一个utf的看看
比如我知道hp上如果文件编码是utf8但是语言环境不是utf的,那也看是乱吗