我在 MySQL 中的 Java 应用程序中插入日文字符时遇到问题。
如果我插入这个字符串“今日は”,我会得到这个“???”。
我的表和它的字段使用 UTF-8。我不认为涉及表结构,因为当我从 PHP 插入相同的字符串时,它可以工作。
CREATE TABLE `pool` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`message` varchar(160) COLLATE utf8_bin NOT NULL DEFAULT ''
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
我正在使用为我管理连接池的库“BoneCPConfig”连接到数据库:
Class.forName("com.mysql.jdbc.Driver");
Properties props = new Properties();
props.setProperty("characterEncoding", "UTF-8");
props.setProperty("useUnicode", "true");
BoneCPConfig config = new BoneCPConfig(props);
config.setJdbcUrl("jdbc:mysql://" + MYSQL_HOST_NAME + "/" + MYSQL_BASE_NAME);
config.setMinConnectionsPerPartition(MIN_CONNEXION_PER_PARTITION);
config.setPartitionCount(PARTITION_COUNT);
config.setUsername(MYSQL_LOGIN);
config.setPassword(MYSQL_PASSWORD);
我这样插入:
String query = "INSERT INTO pool (message) VALUES(?) ";
PreparedStatement insertStatement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
insertStatement.setString(1, "今日は");
insertStatement.execute();
我认为我的问题出在连接配置中,但我不知道该怎么做:-/你有想法吗?
编辑 :
问题解决,见下图