Участник
Пользователь
- Сообщения
- 889
- Реакции
- 149
- Помог
- 25 раз(а)
Здравствуйте.
В плагине следующим запросом создаю таблицу в бд:
Таблица имеет следующий вид:
И тут я столкнулся с проблемой кодировки, дело в том, что если я шлю запрос напрямую в phpMyAdmin, к примеру:
Тогда всё окей, но если я добавляю его из плагина следующим кодом:
То получается, что у меня в таблицу записывает иероглифы (все есть на скрине ниже).
Что я делаю не так, как это пофиксить?
В плагине следующим запросом создаю таблицу в бд:
C#:
new szQuery[1024];
formatex(szQuery, charsmax(szQuery),
"CREATE TABLE IF NOT EXISTS `%s`\
(\
`PromoName` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,\
`PromoDescription` VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,\
`PromoMaximumActivate` INT NOT NULL,\
PRIMARY KEY(`PromoName`)\
)\
ENGINE = InnoDB DEFAULT CHARSET = utf8;",
g_Cvars[CVAR_SQL_TABLE]
);
new iData[1];
iData[0] = SQL_CREATE_TABLE;
SQL_ThreadQuery(g_hSqlTuple, "Query_SqlHandler", szQuery, iData, sizeof(iData));
И тут я столкнулся с проблемой кодировки, дело в том, что если я шлю запрос напрямую в phpMyAdmin, к примеру:
SQL:
INSERT INTO `promocode` (`PromoName`, `PromoDescription`, `PromoMaximumActivate`) VALUES ('TestPromo', 'Тест', 15);
C#:
public ClCmd_AddPromoCode(UserId, LevelId, Cid) {
if(g_Cvars[CVAR_ACCESS][0] && ~get_user_flags(UserId) & read_flags(g_Cvars[CVAR_ACCESS])) {
console_print(UserId, "%l", "CONSOLE_PRINT_NO_ACCESS");
return PLUGIN_HANDLED;
}
enum {
Arg_Name = 1,
Arg_Desc,
Arg_MaxActivate
};
new szPromoCodeName[64], szPromoCodeDescription[256], szPromoCodeMaxActivate[16], iPromoMaxActivate, szQuery[1024], iData[1];
read_argv(Arg_Name, szPromoCodeName, charsmax(szPromoCodeName));
read_argv(Arg_Desc, szPromoCodeDescription, charsmax(szPromoCodeDescription));
read_argv(Arg_MaxActivate, szPromoCodeMaxActivate, charsmax(szPromoCodeMaxActivate));
if(read_argc() < 4) {
console_print(UserId, "%l", "CONSOLE_PRINT_USAGE_ADD");
return PLUGIN_HANDLED;
}
iPromoMaxActivate = str_to_num(szPromoCodeMaxActivate);
trim(szPromoCodeName);
trim(szPromoCodeDescription);
remove_quotes(szPromoCodeName);
remove_quotes(szPromoCodeDescription);
formatex(szQuery, charsmax(szQuery),
"INSERT INTO `%s` (`PromoName`, `PromoDescription`, `PromoMaximumActivate`) VALUES ('%s', '%s', '%i');",
g_Cvars[CVAR_SQL_TABLE], szPromoCodeName, szPromoCodeDescription, iPromoMaxActivate
);
iData[0] = SQL_ADD_PROMOCODE;
SQL_ThreadQuery(g_hSqlTuple, "Query_SqlHandler", szQuery, iData, sizeof(iData));
static iRet;
ExecuteForward(g_Forwards[FORWARD_ADD], iRet, UserId, szPromoCodeName, szPromoCodeDescription, iPromoMaxActivate);
return PLUGIN_HANDLED;
}
Что я делаю не так, как это пофиксить?