我需要通过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
答案 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();
}
}
}