java导出Csv文件,保存为utf-8时有乱码,用了BOM签名似乎无效!
--------------------编程问答-------------------- OutputStreamWriter(OutputStream out, "UTF-8")用这个试试 --------------------编程问答--------------------
谢谢,但还是没用,我怀疑是
byte b[] = {(byte)0xEF, (byte)0xBB, (byte)0xBF};
String bs = new String(b);
osw.write(bs);
加的不对。
import java.io.FileOutputStream;--------------------编程问答-------------------- 不太清楚,学习了。 --------------------编程问答-------------------- 主要是中文会产生乱码! --------------------编程问答-------------------- 你用UrtalEditor,然后另存为的时候,选择utf8含BOM信息试试 --------------------编程问答--------------------
import java.io.IOException;
import java.io.OutputStreamWriter;
public class TestCsvMain {
public static void main(String[] args) {
byte b[] = {(byte)0xEF, (byte)0xBB, (byte)0xBF};
String bs = new String(b);
try {
OutputStreamWriter osw
= new OutputStreamWriter(
new FileOutputStream("E:\\Output.csv"), "utf-8");
osw.write(bs);
osw.write("我生复赛不够");
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
可是,需要做到:直接双击用excel打开就不能是乱码。
应该是和BOM编码有关,不知是要去除还是加上,应该是加上。
但我加了没用。 --------------------编程问答--------------------
看到你的回复了,刚才看留言没仔细看,你是叫我装个UrtalEditor,我现在就去装,谢了! --------------------编程问答-------------------- 还是不行,我自己给自己顶一下吧! --------------------编程问答-------------------- 我也在纠结这个问题,用UTF-8编码保存后,用Excel打开是乱码,但是用WPS表格打开却是正常的。 如果用ANSI保存,用Excel打开又是正常的。难道只能保存为ANSI格式了! --------------------编程问答-------------------- 我也遇到同样的问题,求解中…… --------------------编程问答-------------------- 我能解决。 --------------------编程问答-------------------- 求解 这个能解决吗 听说不能解决 - - --------------------编程问答-------------------- 你保存的时候用GBK,直接打开就不是乱码了,我前几天刚碰到过。好像和excel的打开默认编码有关系。UTF-8没搞定...同求 --------------------编程问答-------------------- 怎么解决的啊? --------------------编程问答-------------------- 想问楼主,这个问题解决了吗,把答案分享下啊,我也在纠结这个问题 --------------------编程问答-------------------- out = new OutputStreamWriter(fos, "UTF-16LE");
out.write(0xFEFF);
out.write(content); --------------------编程问答--------------------
public static void writeToFile(List<String> lines, File f)
throws IOException {
System.out.println("writeToFile function started.");
String encoding = code(f);
encoding = "UTF-16LE";
FileOutputStream fos = new FileOutputStream(f);
OutputStreamWriter writer = new OutputStreamWriter(fos, encoding);
BufferedWriter bw = new BufferedWriter(writer);
for (int i=0; i<lines.size();i++) {
if(i == 0){
bw.write("\uFEFF"+lines.get(i));// 加上BOM\uFEFF
if(i != lines.size() - 1){
bw.newLine();
}
continue;
}
bw.write(lines.get(i));
if(i != lines.size() - 1){
bw.newLine();
}
}
bw.write("\r\n");
bw.flush();
writer.flush();
fos.flush();
bw.close();
writer.close();
fos.close();
System.out.println("writeToFile function finished.");
}
补充:Java , Java相关