|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.04.2022, 21:22 | #1 |
Новичок
Джуниор
Регистрация: 24.04.2022
Сообщений: 3
|
libmysql.lib и C++
Подскажите, пожалуйста, как правильно передавать юникодные строки в запросы
mysql_query(MYSQL*, char* )? Например, UnicodeString S = L"INSERT INTO `test` VALUES('3','南部攻防、長期化か ロシア、苦戦も勝利」宣伝' );"; Как корректно выполнить этот запрос, если mysql_query принимает только тип char* ? Тип данных столбца в MySQL - utf8mb4_unicode_ci |
25.04.2022, 21:45 | #3 |
Новичок
Джуниор
Регистрация: 24.04.2022
Сообщений: 3
|
Спасибо за ответ!!!
Я пробовала и mysql_real_query. Все равно либо ничего не записывается (ошибка SQL синтаксиса), либо пишутся кракозябы вместо иероглифов, типа такого "å—部攻防ã€é•·æœŸåŒ–ã‹ã€€ãƒ*ã ‚·ã‚¢ã€è‹¦æˆ¦ã‚‚å‹åˆ©ã€å®£ä¼" Никак не могу понять как из UnicodeString сформировать, например, UTF8 строку и потом передать ее в запрос. Делала так: 1. Устанавливаю character set для столбца - utf8mb4 Конвертирую в UnicodeString в AnsiString через UTF8Encode или UnicodeToUtf8 Полученную AnsiString передаю в mysql_real_query 2. Устанавливаю character set для столбца - utf16 (utf16le) Передаю в mysql_real_query указатель на (char*) S.c_str() Как правильно действовать? |
25.04.2022, 21:50 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Попробуйте MultiByteToWideChar/WideCharToMultiByte
|
26.04.2022, 00:47 | #5 |
Новичок
Джуниор
Регистрация: 24.04.2022
Сообщений: 3
|
Пробовала вот так:
AnsiString SA; UnicodeString S = L"INSERT INTO `test` VALUES('7','南部攻防、長期化か ロシア、苦戦も勝利」宣伝' );"; int L = WideCharToMultiByte( CP_UTF8, 0, S.c_str(), S.Length(), NULL, 0, NULL, NULL ); SA.SetLength(L); // L = 100 L = WideCharToMultiByte( CP_UTF8, 0, S.c_str(), S.Length(), SA.c_str(), L, NULL, NULL ); int r = mysql_real_query(db, SA.c_str(), L); // L = 100 if ( r != 0 ) ShowMessage(mysql_error(db)); Записалось: å—部攻防ã€é•·æœŸåŒ–ã‹ã€€ãƒ*ã‚ ·ã‚¢ã€è‹¦æˆ¦ã‚‚å‹åˆ©ã€å®£ä¼ Т.е. ровно то же самое, что и с использование UTF8Encode |
26.04.2022, 12:48 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Проблема может заключаться в том как компилятор изначально воспринимает исходную строку.
Редактор -[преобразование текста]-> Компилятор -[Запись данных в бинарном виде]-> Программа -[WideCharToMultiByte] -> MySQL Стоит попробовать определить эти символы вне программы (считать из файла) или задать массивом байтовых значений 0x.., 0x.. и .т.д. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с libmysql.dll | -Jack- | БД в Delphi | 1 | 09.07.2012 07:49 |
Использование libmysql | slava-217 | БД в Delphi | 0 | 15.01.2011 13:35 |
Error libmysql.dll | Skynet91 | БД в Delphi | 2 | 09.02.2010 17:17 |
libmysql.dll | kr00t | БД в Delphi | 1 | 05.02.2010 21:20 |
libMySQL | jziiiiiii | БД в Delphi | 10 | 11.08.2008 16:16 |