您需要确保您使用InputStreamReader
以及正确的字符集(这是文件本身的一个,因此在此特定情况下为ISO-8859-1
)读取CSV。
BufferedReader reader = new BufferedReader(new InputStreamReader(input, "ISO-8859-1"));
你还需要确保JDBC连接字符串包含characterEncoding
参数用正确的字符集(这是被用,你还没有弄清楚MySQL数据库上创建该表的一个)。如果它看起来是一个Unicode字符集,那么您还需要添加参数useUnicode=true
。
String url = "jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8&useUnicode=true";
你的下一个问题将可能是我如何确定我的数据库表中正在使用的字符集?。您可以使用SHOW
命令执行此操作。它将包含有关charset的信息。
SHOW CREATE DATABASE dbname; -- shows CREATE DATABASE statement.
SHOW CREATE TABLE dbname.tblname; -- shows CREATE TABLE statement.
也就是说,无关的问题,你知道,MySQL提供了内置的CSV导入设施,并因此你不一定需要的Java/JDBC的呢?结帐LOAD DATA INFILE
command。你可以指定CSV文件的字符集作为命令参数,MySQL会担心正确的转换本身。
非常感谢,解决了它! – 2010-11-22 23:17:14
不客气。 – BalusC 2010-11-23 02:48:37