среда, 11 января 2012 г.

"????" poco mysql utf8

#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

Комментариев нет:

Отправить комментарий