我有一个具有以下设置的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测试输出为:
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=utf8show create database joomla输出为:
CREATE DATABASE `joomla` /*!40100 DEFAULT CHARACTER SET utf8 */发布于 2011-11-21 00:22:45
通过DBCP连接池bean设置的连接属性不会被视为将它们附加到JDBC url。
所以,最后,将?characterEncoding=UTF-8&useUnicode=true附加到连接url中对我有帮助。
发布于 2011-11-20 05:11:11
如果你使用Eclipe,你有没有检查你的编码:
将其更改为UTF-8可能会有所帮助。
祝好运!
https://stackoverflow.com/questions/8196937
复制相似问题