У меня возникают проблемы с кодировкой символов при выполнении вставки в таблицу mysql. Поле таблицы, на котором я сосредоточен, имеет следующие свойства:
Сопоставление: utf8_general_ci varchar (255)
Проблема возникает с китайскими и иностранными иероглифами. Я попытался использовать callablestatement для вызова хранимой процедуры, но это не работает, поскольку запись выглядит следующим образом:
?????
Я провел отладку и обнаружил, что свойство charencoding callablestatement имеет это значение;
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);
и код callablestatement:
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. Любая помощь приветствуется,
SET NAMES utf8
перед вашим оператором, используя то же соединение jdbc - person Stephan   schedule 19.06.2015