Я пытаюсь объединить массив строк в массив символов - но одна из строк написана на иностранном языке (для чего мне нужен UTF8). Я могу увидеть строку UTF8 на соответствующем языке в отладчике (Visual Studio) после того, как я прочитал ее из базы данных и поместил в массив wxString, но когда я пытаюсь соединить строку с массивом, t никогда не помещается туда .
Я пробовал variable.mb_str ()
variable.mb.str (). Данные (). Ни один из них не работает в strcat
для моих данных языка. Другие данные объединены в порядке. Все данные поступают из базы данных MariaDB.
int i, numRows;
wxString query;
wxString sortby;
wxString group_list;
wxString *stringGroups;
char holdString[400];
/* Try UTF Force */
query.Printf(_("set names 'utf8'"));
mysql_query(mDb, query.mb_str());
result = mysql_store_result(mDb);
mysql_free_result(result);
query.Printf(_("select GROUP_NAME from USER_PERMS where USER_NAME =
\"%s\"
ORDER BY GROUP_NAME "), riv_getuser().c_str() );
mysql_query(mDb, query.mb_str());
result = mysql_store_result(mDb);
numRows = mysql_num_rows(result);
stringGroups = new wxString[numRows + 1];
i = 0;
while ((row = mysql_fetch_row(result)))
{
stringGroups[i] = wxString(row[0], wxConvUTF8);
i++;
}
mysql_free_result(result);
i = 0;
strcpy (holdString,"IN (\'");
while (i < numRows)
{
if (i != 0) strcat(holdString, "\', \'");
strcat(holdString, (const char *)stringGroups[i].mb_str().data());
i++;
}
strcat (holdString," \')");
-- END OF CODE --
--ACTUAL stringGroup that fails -- Debugger Watch Output
stringGroups[2] {m_impl=L"文字化け"...
Я ожидаю получить:
IN ( 'test' , 'test' , '文字化け' )
что я получу
IN ( 'test','test2','' )