Java mysql字符编码
我有一个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客户端,它
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,是否检查了编码:
- 窗口->首选项->常规->工作区
- 右键单击项目->属性->资源
祝你好运 通过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更新之前,我在控制台中回显了该字符串,以进行双重检查。第二:程序也使用了不同的数据库,连接上的字符没有问题。