执行插入 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 时将其作为默认设置。任何帮助表示赞赏,