кодировка символов, выполняющая вставку mysql с помощью callablestatement или jdbctemplate

У меня возникают проблемы с кодировкой символов при выполнении вставки в таблицу 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. Любая помощь приветствуется,


person vbNewbie    schedule 19.06.2015    source источник
comment
какие rdbms вы используете?   -  person Stephan    schedule 19.06.2015
comment
если rdbms - это mysql, вы можете попробовать выполнить этот запрос SET NAMES utf8 перед вашим оператором, используя то же соединение jdbc   -  person Stephan    schedule 19.06.2015
comment
Я использую mysql; Спасибо за ответ; не был уверен, как это сделать, поэтому искал в Интернете и нашел довольно много негативов при этом. blog.oneiroi.co.uk /mysql/   -  person vbNewbie    schedule 19.06.2015
comment
попробуйте мое предложение и дайте мне сейчас, если оно сработает   -  person Stephan    schedule 19.06.2015
comment
пробовал так но не получилось   -  person vbNewbie    schedule 19.06.2015


Ответы (1)


Попробуйте включить кодировку в строку подключения, как это jdbc:mysql://localhost/some_db?useUnicode=yes&characterEncoding=UTF-8

person StanislavL    schedule 19.06.2015