1

我有一个带有希伯来字符的 CSV 文件。当我在 Mac 上的 TextEdit 中打开它时,我可以很好地看到希伯来语。

我使用扫描仪将它带入我的 Java 代码,同时将其编码为 UTF-8:

File file = new File(System.getProperty("user.dir") + System.getProperty("file.separator") + fileName);
Scanner scanner = new Scanner(new FileInputStream(file), "UTF-8");

然后我解析,并使用 Hibernate 将其发送到 MySql 数据库:

for(int i=0; i<elements.length; i++) {

    String elem = elements[i];
    String[] client = elem.split(",");

    for(int j=0; j<client.length; j++) {
        Client c = new Client();
        c.setFirstName(client[j]);
        System.out.println(client[j]);
        DatastoreManager.persist(c);
    }
}

Eclipse 控制台中的打印输出和 MySql 的条目都以 ????? 的形式出现。

搜索解决方案我尝试将字符串转换为字节:

byte[] ptext = client[j].getBytes("UTF8");
String value = new String(ptext, "UTF-8"); 

我将 MySql 表转换为字符集 UTF-8 Unicode 和排序规则 utf8mb4_general_ci。

但似乎没有任何效果。有任何想法吗?

4

1 回答 1

1

在 mac 中使用 file -I {filename} 来检查编码。你得到改变的编码:

Scanner scanner = new Scanner(new FileInputStream(file), "UTF-8");

现在我假设您在 eclipse 中看到了正确编码的字符。

由于您使用的是 Hibernate 和 MySql,因此您应该在 hibernate 配置中添加以下内容:

app_persistance.connection.url=jdbc:mysql://localhost:3306/yourDatabase?useUnicode=true&amp;characterEncoding=utf-8
app_persistance.hibernate.connection.CharSet=utf8
app_persistance.hibernate.connection.characterEncoding=utf8
app_persistance.hibernate.connection.useUnicode=true
于 2013-11-13T15:01:01.687 回答