0

执行插入 mysql 表时,我遇到了字符编码问题。我关注的表字段具有以下属性:

整理:utf8_general_ci varchar(255)

问题出现在中文和外文字符上。我尝试使用 callablestatement 来调用存储过程,但它不起作用,因为条目如下所示:

 ?????

我调试了一下,发现callablestatement charencoding属性有这个值;

Cp1252

我还没有找到改变这种情况的方法。我尝试将我插入的值设置为 NVARCHAR 但这也不起作用。尝试使用 JDBCTemplate 进行插入的建议也不起作用:

Object[] params = new Object[] { Num, Name, Link,type,siteid,GreetingController.StreamID };
        int[] types = new int[] { Types.NVARCHAR, Types.NVARCHAR, Types.NVARCHAR,Types.INTEGER,Types.NVARCHAR, Types.NVARCHAR };

        recordsAffected= jdbcTemplateObject.update( sql, params, types);

和可调用语句代码:

Connection conn = DriverManager.getConnection(connectionUrl,info); 
        CallableStatement cstmnt = conn.prepareCall("{ call   putNewPage(?,?,?,?,?,?) }");

        cstmnt.setString(1, Num);
        cstmnt.setString(2, Name);
        cstmnt.setString(3, Link);
        cstmnt.setInt(4, type);
        cstmnt.setString(5, siteid);
        cstmnt.setString(6, GreetingController.StreamID);

这令人沮丧。我知道 .NET 在使用 SQL 插入以编码 UTF-8 时将其作为默认设置。任何帮助表示赞赏,

4

1 回答 1

0

尝试在连接字符串中包含编码,就像这样jdbc:mysql://localhost/some_db?useUnicode=yes&characterEncoding=UTF-8

于 2015-06-19T15:46:11.513 回答