#include <iostream>
#include <Windows.h>
#include <mysql.h>
#include <string>
#include <stdio.h>
using namespace std;
MYSQL *connection, mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int query_state;
int main(int argc, char** argv)
{
setlocale(LC_ALL, "");
mysql_init(&mysql);
mysql_real_connect(&mysql,"xxx","xxx","xxx","xxx",0,0,0);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES 'utf8' [COLLATE 'utf8_slovak_ci']");
mysql_query(&mysql, "SELECT priezvisko FROM tour_pouzivatelia WHERE id_pouz=5");
result = mysql_store_result(&mysql);
if ((row = mysql_fetch_row(result)) != NULL) {
string sql;
sql = "UPDATE tour_pouzivatelia SET priezvisko='";
sql += row[0];
sql += "' WHERE id_pouz=2";
char* s = new char[sql.length()];
strcpy(s, sql.c_str());
mysql_query(&mysql, s);
}
getchar();
return 0;
}
Значение в базе данных +ľščťžýáíéô§ň
, таблицы имеют кодирокие utf8
и ut8_slovak_ci
сверкуmysql_query не сохраняет данные правильно
Еще следующий код сохраняет результат как +¾šèžýáíéúäô§ò
.
Я использую Visual Studio 2010 C++ express.
Проблема заключается в том, что mysql_query
не обрабатывает переданный ему sql, он удаляет определенные символы, такие как š, č, ľ. Я пробовал много преобразований, сама функция требует, чтобы sql был как const char *
.
Есть ли способ сделать это, так что переменная char *
сохранит заданные символы правильно?
Если я читать значения из базы данных они отображаются корректно ...
Wow, что помогло за содержание от базы данных, так что теперь работает (хотя я бы поклялся, что я это пробовал раньше), nvm спасибо :) – user1143348
хотя он все еще не работает для sql = "UPDATE tour_pouzivatelia SET priezvisko = 'aľšč' WHERE id_pouz = 1;"; он просто сохраняет один, а не остальные символы – user1143348
У вас был жесткий код запроса UPDATE? Может быть, файл не в кодировке UTF8. Попробуйте проверить, будет ли VS2010 кодировать файл в UTF8 (даже если show ok) http: // stackoverflow .com/вопросы/696627 /, как в настройке-стандарта кодирования-в-зрительно-студия – rkosegi