当从我的应用程序插入一些中文字符时,它们会以“???”的形式写入数据库。不用说,这一切都可以在内置的命令行 mysql 客户端中正常工作。
连接字符串:
--user-db-uri = jdbc:mysql://localhost/tigasedb?user=tigase_user&password=tigase_passwd&useUnicode=true&characterEncoding=utf8&noAccessToProcedureBodies=true
代码:
try {
conn_valid_st.setQueryTimeout(query_timeout);
st = conn.prepareStatement("SET character_set_client = utf8");
st.execute();
st.close();
st = conn.prepareStatement("SET character_set_connection = utf8");
st.execute();
st.close();
st = conn.prepareStatement("SET character_set_results = utf8");
st.execute();
st.close();
st = conn.prepareStatement("SET collation_connection = utf8_general_ci");
st.execute();
st.close();
st = conn.prepareStatement("SET NAMES utf8");
st.execute();
st.close();
st = conn.prepareStatement("SET CHARACTER SET utf8");
st.execute();
st.close();
} catch (SQLException ex) {
// Ignore for now, it seems that PostgreSQL does not support this method
// call yet
if (null != st)
st.close();
log.log(Level.WARNING, "DB server said: {0}", ex.toString());
}
是什么让我难以捉摸?
编辑:
创建表... ENGINE=InnoDB 默认字符集 utf8 collate utf8_unicode_ci ROW_FORMAT=DYNAMIC;
插入字符:在健身房
验证由内置的命令行 mysql 客户端完成。
编辑: http ://docs.oracle.com/cd/E17952_01/refman-5.0-en/connector-j-reference-charsets.html没有帮助
检查系统属性“file.encoding”的值。如果那不是“UTF-8”,那么每当您将字节解码为字符时,都需要明确指定“UTF-8”作为字符编码。例如,当您使用 byte[] 调用 String 构造函数或使用 InputStreamReader 时。
使用 JDBC 连接器 5.1 从 Java 读取/写入 MySQL 中的 UTF-8 数据的问题- 没有帮助
将存储过程中的字符串变量声明为_loc VARCHAR(128) CHARSET utf8
- 没有帮助