|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
|
Запись кириллицы в БД CGI-скриптом на C++12.06.2017, 21:58. Показов 3154. Ответов 13
Задача такая: CGI-скрипт расположенный на сайте получает через GET параметры на русском языке. Далее он должен эти значения добавить в таблицу БД MySQL сайта.
Целевая ячейка в таблице БД имеет тип varchar(64) и кодировку utf8_general_ci (можно поставить другую, это не критично). С латиницей всё в порядке, но когда пытаюсь записать русскоязычные символы - в БД записываются кракозябры. Испробовал уже кучу способов - пока без результатов. Пробовал записывать wstring. Пробовал отдельно из байтов формировать UTF-8 коды (char str[6] = { 208, 176, 208, 177, 208, 178 }; ). С последним вариантом, если после компиляции в Ubuntu вывести эту строку в консоль - то успешно выводит "абв", а в БД все равно записывается "абв". Естественно, кроме этого есть и проблема того, что русскоязычная строка из запроса выглядит так %D0%B0%D0%B1%D0%B2 , но это более решаемая проблема. Кто-нибудь в курсе, как CGI-скриптом на C++ записать в БД кириллицу?
0
|
|
| 12.06.2017, 21:58 | |
|
Ответы с готовыми решениями:
13
Запись формы в файл CGI скриптом на Python не запускаеться (CGI вместе с MySQL) под Apache: Premature end of script headers: c:/www/cgi-bin/catalog.cgi Запись кириллицы в DBF |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 12.06.2017, 22:23 | |
|
Программа-то где? Как запись идёт? В какой кодировке приходит?
0
|
|
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
||||||
| 13.06.2017, 15:47 [ТС] | ||||||
|
Вот интересующие части кода, если это как-то поможет.
В общем понял, что причина вызвана тем, что используется не кодировка (charset) UTF-8, а сравнение (collation) utf8_general_ci . Только вот как в C++ записывать в таком формате кириллицу пока не знаю.
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 13.06.2017, 15:51 | |
|
Если у тебя Linux, то в программе константы 74-76 и так должны быть в utf-8. Какая кодировка в системе?
0
|
|
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
|
| 13.06.2017, 15:55 [ТС] | |
|
Пробовал сохранять код и в Windows-1251 и в UTF-8.
Наткнулся на эту статью: (в спойлере ссылка на сторонний форум) Кликните здесь для просмотра всего текста
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 13.06.2017, 16:28 | |
|
Помогло? Ты используешь SET NAMES и прочее?
0
|
|
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
||||||
| 13.06.2017, 16:54 [ТС] | ||||||
|
Попробовал, поместил вот такой код в main()
Причем code (возвращенный через результат запроса) в браузере правильно отображается как UTF-8.
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 13.06.2017, 17:12 | |
|
У тебя QueryDB() каждый раз переподключается, что ли? Ну тогда, конечно, работать не будет.
Внеси тогда установку этих параметров туда.
0
|
|
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
||||||
| 13.06.2017, 17:26 [ТС] | ||||||
|
Кликните здесь для просмотра всего текста
Пардон, это я уже туплю, сейчас исправлю.
Добавлено через 12 минут УРАААААААААААААААААААА Получилось! После добавления таких строк в функцию bool QueryDB(char *query, char **queryResult) (после 41-ой строки)
Осталось ещё сделать, чтобы она вот такой код %D0%B0%D0%B1%D0%B2 правильно преобразовывала в UTF-8.
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||||||
| 13.06.2017, 17:39 | ||||||
|
А зачем их копировать?
0
|
||||||
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
||||||
| 13.06.2017, 17:47 [ТС] | ||||||
|
Уже поправил. Извиняюсь, я в основном в работе использую C#.
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 13.06.2017, 17:58 | |
|
Есть же какие-то готовые решения.
0
|
|
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
|
| 13.06.2017, 18:00 [ТС] | |
|
Я уже видел, посмотрим. Если что - сам напишу. По крайней мере это уже не большая проблема.
0
|
|
|
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
|
||||||
| 15.06.2017, 16:42 [ТС] | ||||||
|
Для декодирования URL использовал следующую функцию (код не мой):
0
|
||||||
| 15.06.2017, 16:42 | |
|
Помогаю со студенческими работами здесь
14
Запись кириллицы в массив Запись кириллицы в строку из консоли Некорректная запись кириллицы в файл Запуск CGI вне cgi-bin и запуск index.cgi Запись в txt кириллицы, появляются знаки вопроса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|