我有一台具有以下设置的MySQL服务器:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
我有一个Java客户端,使用带有此配置的DBCP连接到此数据库:
<bean id="dsJoomla" class="hu.eutrust.wsfresh.CustomDataSource">
<property name="driverClassName" value="${joomla.db.driver}"/>
<property name="username" value="${joomla.db.user}"/>
<property name="password" value="${joomla.db.pass}"/>
<property name="url" value="${joomla.db.url}"/>
<property name="connectionProperties" value="characterEncoding=UTF-8;useUnicode=true;"/>
</bean>
然后我在代码中执行某个更新,如下所示:
template.update("insert into test (nev) values (:nev)", new MapSqlParameterSource("nev", "Árvíztűrő"));
在phpMyAdmin中检查结果后,我看到一行:
ID NEV
2 Árvízt?r?
不在latin1集中的ő和ű字符很糟糕。我想这是因为character_set_server是latin1。但是使用phpMyAdmin我可以手动编辑记录并输入'Árvíztűrő',之后记录是正确的。所以我想可以使用这些设置将所需的值输入数据库。如何使用Java客户端执行此操作?我该如何配置连接?如果连接100%utf8,我的ő和ű字符为什么会出错?
show create table test output是:
CREATE TABLE `test` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NEV` varchar(64) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
show create database joomla output是:
CREATE DATABASE `joomla` /*!40100 DEFAULT CHARACTER SET utf8 */
答案 0 :(得分:1)
通过DBCP连接池bean设置的连接属性不会被视为将它们附加到JDBC URL。
所以最后将?characterEncoding=UTF-8&useUnicode=true
附加到连接网址帮助了我。
答案 1 :(得分:-1)
如果你正在使用Eclipe,你是否检查了你的编码:
将其更改为UTF-8可能有所帮助。
祝你好运!