这是我的问题的延伸。
在为我链接到的问题收集更多信息的简单测试中,我尝试通过 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"
}
}