Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用CSVWriter将数据从DB写入CSV,在Excel中打开的CSV文件中提供垃圾值_Java_Excel_Csv_Encoding - Fatal编程技术网

Java 使用CSVWriter将数据从DB写入CSV,在Excel中打开的CSV文件中提供垃圾值

Java 使用CSVWriter将数据从DB写入CSV,在Excel中打开的CSV文件中提供垃圾值,java,excel,csv,encoding,Java,Excel,Csv,Encoding,我尝试了下面的程序将数据从数据库写入CSV文件。当我打开CSV文件时,它会显示西班牙语特殊字符的垃圾值 public class T { CSVWriter out = null; private void write(String[] values) throws IOException { out.writeNext(values); } public static void main(String[] args) throws IOExc

我尝试了下面的程序将数据从数据库写入CSV文件。当我打开CSV文件时,它会显示西班牙语特殊字符的垃圾值

public class T {
    CSVWriter out = null;

    private void write(String[] values) throws IOException {
        out.writeNext(values);
    }

    public static void main(String[] args) throws IOException {

        File f  = new File("s.csv");

        FileOutputStream os = new FileOutputStream(f, false);
        os.write('\ufeff');

        CSVWriter out = new CSVWriter(
            new BufferedWriter(
                new OutputStreamWriter(
                    os, "UTF-8")));
    }
}

将编码从utf8更改为ISO-8859-1有效。但它也是其他语言使用的通用代码。我不能硬编码ISO-8859-1。为什么我指定UTF8时excel会显示垃圾值。

您是从数据库中的CSV转储开始,还是尝试创建CSV文件?我正在从db读取数据并写入CSV文件。在数据库中,其存储的正确西班牙语字符数据库字符集为WE8MSWIN1252。我正在创建一个csv文件,并将西班牙语数据从db写入csv。您正在将csv直接打开到excel中;可能是从资源管理器窗口双击它。使用数据打开它,从文本中获取外部数据,并选择65001:Unicode(UTF-8)作为文件源。请参阅。实际上我不想手动打开,java程序正在读取数据并进行一些处理。