通过java将带有unicode的mysql导出到csv文件中

时间:2014-12-03 06:31:27

标签: java mysql csv unicode

我需要通过java将带有unicode的mysql表导出到csv文件中。它在excel中导出很好但是unicode tamil字体没有显示。

数据库连接代码:

        String db_dburl = "jdbc:mysql://"+Config.databaseip+":3306/"+Config.databasename;
        String dburl_unicode = db_dburl.concat("?useUnicode=true&characterEncoding=utf-8"); 
        Connection conn1 = DriverManager.getConnection(dburl_unicode, Config.databaseuname, Config.databasepwd);

原始数据: 4 ACகலை-கலாசாரம் - ARTS CULTURE AWவிருதுகள்விழாக்கள் - AWARDS FUNCTIONS enter image description here

2 个答案:

答案 0 :(得分:0)

您需要在运行时期间在java选项中指定文件编码。例如,如果Tomcat Web服务器是您的运行时:添加以下参数    -Dfile.encoding =" UTF-8"

或将环境变量JAVA_TOOL_OPTIONS设置为-Dfile.encoding =" UTF-8"

答案 1 :(得分:0)

首先包括以下.jar文件

您需要添加opencsv-2.3.jar

参考此代码。

    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;    
    import au.com.bytecode.opencsv.CSVWriter;

    public class WriteCSV {
        public static void main(String[] args) {

            try {
                String connectionURL = "jdbc:mysql://localhost:3306/test";
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection(connectionURL, "root", "root");
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.executeQuery("select id_movie, movie_name from movies");
                String csv = "E:\\dummyFolder\\output2.csv";
                CSVWriter writer = new CSVWriter(new FileWriter(csv));
                List<String[]> data = new ArrayList<String[]>();
                while (rs.next())
                {
                    data.add(new String[] { rs.getString(1), rs.getString(2) });
                }
                writer.writeAll(data);
                System.out.println("CSV written successfully.");
                writer.close();

            } 
            catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            catch (SQLException e) 
            {
                e.printStackTrace();
            } 
            catch (FileNotFoundException e) 
            {
                e.printStackTrace();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
        }
    }