使用 callablestatement 或 jdbctemplate 执行 mysql 插入的字符编码
char encoding doing mysql insert with callablestatement or jdbctemplate
我在执行插入 mysql table 时遇到字符编码问题。我关注的 table 字段具有以下属性:
整理:utf8_general_ci
varchar(255)
中外字符出现问题。我尝试使用可调用语句来调用存储过程,但它不起作用,因为条目如下所示:
?????
调试发现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 编码。任何帮助表示赞赏,
尝试像这样在连接字符串中包含编码 jdbc:mysql://localhost/some_db?useUnicode=yes&characterEncoding=UTF-8
我在执行插入 mysql table 时遇到字符编码问题。我关注的 table 字段具有以下属性:
整理:utf8_general_ci varchar(255)
中外字符出现问题。我尝试使用可调用语句来调用存储过程,但它不起作用,因为条目如下所示:
?????
调试发现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 编码。任何帮助表示赞赏,
尝试像这样在连接字符串中包含编码 jdbc:mysql://localhost/some_db?useUnicode=yes&characterEncoding=UTF-8