我想將數據發送到MySQL數據庫,用下面的代碼:C++寫入MySQL數據庫的utf8字符?
#include "StdAfx.h"
#include <iostream>
#include "my_global.h"
#include "mysql.h"
#pragma comment(lib, "libmysql")
#pragma comment(lib, "mysqlclient")
using namespace std;
MYSQL *connection, mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int query_state;
int main()
{mysql_init(&mysql);
//connection = mysql_real_connect(&mysql,"host","user","password","database",0,0,0);
connection = mysql_real_connect(&mysql,"localhost","testc++","mypassword","testc++",0,0,0);
if (connection == NULL)
cout << mysql_error(&mysql) << endl;
else
cout << "connection established" << endl;
mysql_query(connection, "CREATE TABLE writers(name VARCHAR(25))");
mysql_query(connection, "INSERT INTO writers VALUES('攻殻機動隊')");
mysql_query(connection, "INSERT INTO writers VALUES('ブルージェンダー')");
mysql_query(connection, "INSERT INTO writers VALUES('Honore de Balzac')");
mysql_query(connection, "INSERT INTO writers VALUES('Lion Feuchtwanger')");
mysql_query(connection, "INSERT INTO writers VALUES('Emile Zola')");
query_state = mysql_query(connection, "select user_count()");
if (query_state !=0) {
cout << mysql_error(connection) << endl;
mysql_close(connection);
cin.get();
// This code disconnects the mysql connection.
mysql_free_result(result);
mysql_close(connection);
return 1;
}
我遇到的問題是,日本的圖標得到保存爲????而不是ブルージェンダー 我該如何解決這個問題? 我正在使用visual studio 2010.
你是什麼意思的MySQL領域? 在phpmyadmin中,數據庫設置爲:utf8_general_ci – gijs007
'varchar'字段可以設置爲特定的字符編碼,我上一個項目與您的問題相同,但它們都設置爲latin1,這是問題所在。我忘了怎麼做,但沒有測試裝備:(。 – Serdalis
@ gijs007:'utf8_general_ci'是一個**排序規則**而不是一個編碼。確保該列有'utf8'編碼,並且連接本身是'utf8'編碼的('SET NAMES utf8;')。 – Crozin