在UTF-8 Java中导出CSV

在UTF-8 Java中导出CSV,java,csv,utf-8,Java,Csv,Utf 8,我正在尝试导出UTF-8编码的csv文件,以便它可以包含外来字符(áéíóú),但当我导出文件时,它不起作用。这是我的代码示例: 缓冲写入器bw try { bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("./hello.csv"), "UTF-8")); bw.write("decepción,función,torsión");

我正在尝试导出UTF-8编码的csv文件,以便它可以包含外来字符(áéíóú),但当我导出文件时,它不起作用。这是我的代码示例:

缓冲写入器bw

    try {
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("./hello.csv"), "UTF-8"));            
        bw.write("decepción,función,torsión");
        bw.flush();
        bw.close();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
    }

如果我将其导出到一个txt文件,它就会工作,如果我将扩展名更改为csv,它就会停止工作。

就代码而言,您做的是正确的。如果它正确地创建了一个txt文件,那么它也应该使用UTF 8编码正确地创建一个csv文件。确保在支持
UTF-8
的编辑器中打开。尝试在用于打开txt文件的同一编辑器中打开它。

您是如何测试csv文件的?可能您的csv文件查看器没有正确显示utf-8。我认为这可能与文件权限有关,这很奇怪,因为在打开文件输出流时,所有文件都被视为描述符。。。尝试创建空文件,然后打开一个流…我正在使用excel打开csvIf使用excel,转到数据->导入外部数据->导入数据菜单项,并确保您在第一步中选择UTF-8定义“不工作”我正在使用excel打开CSV。我将此信息保存为CSV文件,因为稍后我会将其上载到Salesforce中的数据库。我认为这不是查看器,因为当我在数据库中进行upsert时,字符是在ANSII而不是UTF中上载的-8@Ricardo我相信excel可能是罪魁祸首。你试过在记事本中打开你的csv吗?你是对的,罪魁祸首是excel。在记事本上,它完美地打开了。我仍然不知道为什么当我将文件上传到Salesforce数据库时,它仍然使用ANSII插入/更新字符。