0

这是我的问题的延伸

在为我链接到的问题收集更多信息的简单测试中,我尝试通过 phpMyAdmin 界面将 & 字符插入到我的数据库中......

INSERT INTO `my_db`.`some_table` (`id`, `version`, `value`) VALUES (NULL, '0', '&');

...但插入的是 HTML 等价物&

我的数据库排序规则是utf8_bin,我要插入的表是utf8_general_ci,而我试图将 & 号插入的字段是 类型varchar

我必须怎么做才能将原始 & 字符&插入我的 MySQL 数据库?

更新:

我不知道 phpMyAdmin 的问题是什么,但我想我发现我的应用程序有问题。似乎 Hibernate 只是没有使用正确的字符集进行连接。我已经指定了一个自定义 MySQL 方言,所以我只是覆盖了getTableTypeString如下所示的方法,我的应用程序现在将值正确插入 MySQL:

class CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {   
    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8"
    }
}
4

2 回答 2

0

我不知道 phpMyAdmin 的问题是什么,但我想我发现我的应用程序有问题。似乎 Hibernate 只是没有使用正确的字符集进行连接。我已经指定了一个自定义 MySQL 方言,所以我只是覆盖了 getTableTypeString 方法,如下所示,我的应用程序现在将值正确插入 MySQL:

类 CustomMySQL5InnoDBDialect 扩展 MySQL5InnoDBDialect { @Override
public String getTableTypeString() { return " ENGINE=InnoDB DEFAULT CHARSET=utf8" } }

于 2013-10-01T18:06:55.120 回答
0

您可以尝试:

INSERT INTO `my_db`.`some_table` (`id`, `version`, `value`) VALUES (NULL, '0', _utf8'&');
于 2013-09-30T15:54:13.487 回答