#include <iostream>
#include "Poco/Data/MySQL/Connector.h"
#include "Poco/Exception.h"
#include "Poco/Data/Session.h"
#include "Poco/Data/Statement.h"
using namespace std;
using namespace Poco::Data;
using Poco::Data::Session;
int main() {
MySQL::Connector::registerConnector();
string user = "root";
string password = "111";
string host = "localhost";
string db = "test";
string connection_str = "user=" + user + ";password=" + password + ";host="
+ host + ";db=" + db + ";auto-reconnect=true";
string collation_str = "set collation_connection=utf8_general_ci, "
"character_set_results=utf8, "
"character_set_connection=utf8, "
"character_set_client=utf8";
Session ses("MySQL", connection_str);
string out;
try {
ses << "SELECT name FROM `test` LIMIT 1", into(out), now;
} catch (Poco::Exception &e) {
cout << e.displayText() << endl;
}
cout << "without collation: " << out << endl;
try {
ses << collation_str, now;
ses << "SELECT name FROM `test` LIMIT 1", into(out), now;
} catch (Poco::Exception &e) {
cout << e.displayText() << endl;
}
cout << "with collation: " << out << endl;
return 0;
}
output:
without collation: ????
with collation: тест
SQL:
-- phpMyAdmin SQL Dump
-- --------------------------------------------------------
--
-- Структура таблицы `test`
--
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL,
`name` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `test`
--
INSERT INTO `test` (`id`, `name`) VALUES
(1, 'тест');
задать глобальное значение utf8 в /etc/my.cnf:
[mysqld]
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
collation_server=utf8_general_ci