Java mysql字符编码

Java mysql字符编码,java,mysql,utf-8,character-encoding,Java,Mysql,Utf 8,Character Encoding,我有一个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客户端,它

我有一个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>
在phpMyAdmin中检查结果后,我看到一行:

ID  NEV
2 Árvízt?r?
拉丁1中不包含的ő和ű字符是错误的。我想这是因为字符集服务器是拉丁文1。但使用phpMyAdmin,我可以手动编辑记录并输入“Árvíztűrő”,然后记录是正确的。因此,我认为可以使用这些设置将所需的值输入数据库。如何使用Java客户机实现这一点?如何配置连接?如果连接为100%utf8,为什么我的ő和ű字符会出错

显示创建表测试输出为:

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
CREATE DATABASE `joomla` /*!40100 DEFAULT CHARACTER SET utf8 */
显示create database joomla输出为:

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
CREATE DATABASE `joomla` /*!40100 DEFAULT CHARACTER SET utf8 */

如果您使用的是Eclipe,是否检查了编码:

  • 窗口->首选项->常规->工作区
  • 右键单击项目->属性->资源
将其更改为UTF-8可能会有所帮助


祝你好运

通过DBCP连接池bean设置的连接属性未被视为附加到JDBC url


因此,最后在连接url中添加
?characterEncoding=UTF-8&useUnicode=true
帮助了我。

请提供
show create table test的输出
显示创建数据库
。根据
连接属性
必须用分隔符分隔;用所需的
show
更新了问题。好的,通过DBCP授权。如果我不能用phpMyAdmin插入ő和ű字符,那么我就不会发布这个问题。但是,如果phpMyAdmin可以将ő和ű插入到这个拉丁1数据库中,那么我也希望它来自Java:-)我很确定这个问题与我的Java代码的编码无关。你检查过了吗?您可能在eclipse中正确地看到“Árvíztűrő”(因为您只是使用了支持这些字符的编码),但它可能与url连接字符串“characterEncoding=UTF-8;useUnicode=true;”不一致,在SQL更新之前,我在控制台中回显了该字符串,以进行双重检查。第二:程序也使用了不同的数据库,连接上的字符没有问题。