Hibernate Unicode by netbeans;为什么在数据库中保存为"?????"



我有一个类似这篇文章的问题。我使用的是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://localhost:3307/MY_DB_NAME?useUnicode=true&characterEncoding=UTF-8

但无效!

我还尝试了这个java代码来制作javaStringUnicode,但这也是徒劳的:

    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;
}

有人能帮我吗?!

JVM中的字符串已经正确编码。没有必要对它们进行重新编码。

只需将String实例传递给PreparedStatement中的setString()方法,就可以了(前提是数据库使用UTF8(

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

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

您需要将数据库排序规则和表排序规则设置为*utf8_general_ci*。您可以在这里找到如何做到这一点,并确保您的数据库查看器支持utf-8编码,否则您将看到unicode字符为???????

当我持久化数据时,我在Oracle中遇到了同样的问题。但按照以下方式修复了它。

  1. 我首先知道我需要使用Universal version of Oracle。所以,我重新安装了我的预言机的通用版本。(与MySql案例核对(

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

  3. 然后一切都很好,因为它在DB和以及在视图中(浏览器(。

Note:确保您的操作系统上安装了语言包。

希望此输入可以帮助您

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

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

相关内容

  • 没有找到相关文章

最新更新