日期:2014-05-20  浏览次数:21036 次

csvjdbc读取csv文件乱码
如题,请问有什么可以解决的?

csvjdbc jar:http://txspace.2.taohuacun.cn/csvjdbc.jar
csv文件:http://txspace.2.taohuacun.cn/csv.csv
Java code

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class Main {
    public static void main(String[] args) {
        try {
            String csvFilePath = URLDecoder.decode(Main.class.getResource(
                    "基础数据").getPath(), "UTF-8");

            Connection conn = Main.getCSVConnection(csvFilePath);

            if (conn != null) {
                Statement stmt = conn.createStatement();
                String sql = "select * from 车辆";
                ResultSet rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    System.out.println(rs.getString(1));
                }
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }


    }

    public static Connection getCSVConnection(String csvFilePath) {
        Connection conn = null;
        try {
            Class.forName("org.relique.jdbc.csv.CsvDriver");
            Properties props = new java.util.Properties();

//            props.put("separator", "|"); 
            props.put("suppressHeaders", "true");
//            props.put("fileExtension", ".txt"); 
//            props.put("charset", "ISO-8859-2"); 
//            props.put("maxFileSize", 10000); 
//            props.put("create", "true"); 
//            props.put("lineBreakEscape", "ELB"); 
//            props.put("carriageReturnEscape", "ECR"); 
//            props.put("useQuotes", "true"); 

            conn = DriverManager.getConnection("jdbc:relique:csv:"
                    + csvFilePath, props);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        return conn;
    }
}




csv用记事本打开没有乱码。
读取时中文乱码,数字中间有小方块。

请求高手解答,如果有其他的读取方法并且不乱码,++++分

最好有实例





------解决方案--------------------
读取时乱码?看看你读取的编码设置啊。。
------解决方案--------------------
搞不定,我用你提供的那个csv试了下,也是乱了。不过把那个csv保存成UTF-8格式的再按那个格式取,是正常的。