java - 使用UTF-8写入文件

标签 java android file utf-8

我正在尝试使用 utf-8 编码编写文件。 我想在 PC 上的 Excel 中查看此文件 我已经查看了足够多的实现此代码的示例。但我没有达到预期的结果。 我的代码:

    String baseDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
    String fileName = etName.getText().toString() + ".csv";
    String filePath = baseDir + File.separator + fileName;
    File sdCardFile = new File(filePath);

    String DATE = "01.04.2017 - 30.04.2017";
    String NEW_LINE = "\n";
    String NEW_CELL = ";";
    String HEADER = "Место;" +
            "Фамилия ИО;" +
            "Цикл ТО-1;" +
            "Культурное состояние л-ва;" +
            "Посещение тех.занятий;" +
            "Расшифровка лент;" +
            "Охрана труда;" +
            "Отказы";

BufferedWriter bufferedWriter = new BufferedWriter
                (new OutputStreamWriter(new FileOutputStream(sdCardFile), "UTF-8"));
        bufferedWriter.write(DATE);
        bufferedWriter.write(NEW_LINE);
        bufferedWriter.write(HEADER);
        for(int i = 0; i < machinists.size(); i ++){
            bufferedWriter.write(NEW_LINE);
            bufferedWriter.write(String.valueOf(i+1));
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(machinists.get(i).getLastName());
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(String.valueOf(machinists.get(i).getPoints().getTo()));
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(String.valueOf(machinists.get(i).getPoints().getCultureState()));
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(String.valueOf(machinists.get(i).getPoints().getTechnicalSessions()));
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(String.valueOf(machinists.get(i).getPoints().getTapeTranscript()));
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(String.valueOf(machinists.get(i).getPoints().getOt()));
            bufferedWriter.write(NEW_CELL);
            bufferedWriter.write(String.valueOf(machinists.get(i).getPoints().getFault()));
            bufferedWriter.write(NEW_CELL);
        }
        bufferedWriter.close();
    }

但我看到了这一点。

screenshot excel csv

为什么?

最佳答案

我解决了这个问题!

FileOutputStream os = new FileOutputStream(sdCardFile);
        os.write(0xef);<-!!!!!!!!
        os.write(0xbb);<-!!!!!!!!
        os.write(0xbf);<-!!!!!!!!
        CSVWriter writer = new CSVWriter(new OutputStreamWriter(os), ';');
writer.writeNext(HEADER);
...
writer.writeNext('something data');
writer.close();

关于java - 使用UTF-8写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43918276/

相关文章:

java - 我在 Java 迭代器中的代码有什么问题

Javascript filereader onload(从服务器获取文件)

python - 使用 python 在文本文件中搜索特定字符的出现

java - 无法从文件退出循环 Java 输入

java - JSF 2.0 托管bean 问题!

Android - 约束布局不会尊重边距?

android - 错误错误 : Error: No resource found that matches the given name (at 'theme' with value '@style/CustomActionBarTheme' ) can't figure out

java - 无法从上下文中将请求字符编码设置为 UTF-8

java - 将后端服务的一行数据放入ListView中

java - 通知一系列事件完成的监听器(启动同步服务)