通过netbeans进行Hibernate Unicode;为什么在db中保存为“?????”

时间:2011-12-08 07:32:20

标签: java mysql database hibernate netbeans

我遇到像this post这样的问题。我正在使用netbeans 7.01 IDE和MySQL 5.2.35。我使用这个技巧但没有效果: 我在配置文件中添加了这个属性:

<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>

还有:

  

JDBC:MySQL的://本地主机:3307 / MY_DB_NAME了useUnicode =真安培;的characterEncoding = UTF-8

但无效!

我也试过这个java代码来制作java String Unicode,这也是徒劳的:

    public static String toUTF8(String isoString) {
    String utf8String = null;
    if (null != isoString && !isoString.equals("")) {
        try {
            byte[] stringBytesISO = isoString.getBytes("ISO-8859-1");
            utf8String = new String(stringBytesISO, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            System.out.println("UnsupportedEncodingException is: " + e.getMessage());
            utf8String = isoString;
        }
    } else {
        utf8String = isoString;
    }
    return utf8String;
}

任何人都可以帮助我吗?!

5 个答案:

答案 0 :(得分:2)

JVM中的字符串已经正确编码。无需重新编码。

只需将String实例传递给PreparedStatement中的setString()方法,你应该没问题(如果您的数据库 使用UTF8)

顺便说一句:string.lenght() == 0"".equals(string)

快得多

答案 1 :(得分:0)

检查您的数据库字符集是否也是UTF-8:http://dev.mysql.com/doc/refman/5.0/en/charset-database.html

答案 2 :(得分:0)

您需要将db collat​​ion和table collat​​ion设置为* utf8_general_ci *。您可以找到here如何执行此操作并确保您的数据库查看器支持utf-8编码,否则您将看到unicode字符为???????

答案 3 :(得分:0)

当我持久保存数据时,我在Oracle中面临同样的问题。但是按照以下方式修复它。

  1. 我先知道我需要使用Universal version of Oracle。 所以,我用通用版重新安装我的oracle。 (查看MySql案例)

  2. 然后我将UTF-8中的所有字符串转换为转义码 使用java的native2ascii工具的字符串。

  3. 然后一切正常,因为它在DB和中正确呈现 以及视图(浏览器)。

  4. Note:确保您的语言包已安装在您的操作系统上。

    希望此输入可以帮助您

答案 4 :(得分:0)

我也遇到过这样的问题。我正在使用.jsp页面,并帮助我在每个.jsp文件中添加以下行:

<%@ page pageEncoding="utf-8" %>