Я передаю JsonObject, состоящий из объектов типа String, из android-приложения на сервер через POST-запрос и сохраняю переменные в MySQL c помощью JDBC. Если в переменных String содержатся только английские буквы, всё работает правильно. Но при попытке сохранить кириллицу или символы "Ç", "ẞ" и т.д. сервер выдаёт ошибку:
Incorrect string value: '\xC2\x92 \xC3\x91\xC2...' for column 'contacts' at row 1
Что я уже сделал:
"jdbc:mysql://localhost/YOURWAY?useUnicode=yes&characterEncoding=UTF-8"
До этого действия, MySQL сохранял кириллицу, но частично, в виде: "Доб??о??е ут??о"UPDATE:
ALTER DATABASE название_базы CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
и ALTER TABLE название_таблицы CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ошибка больше не вылетает, но теперь при вызове SELECT * FROM название_базы
MySQL выдаёт что-то вроде "ÃÂðòðù ôÃÂÃÂöøÃÂÃÂ!". При этом, если получить эти данные на Android чере GET-запрос, на Android снова отображается "Доб??о??е ут??о".
Что я упускаю из виду?
Итак, я нашёл проблему. Это касалось вовсе не MySQL.
Проблема была в библиотеке okhttp в составе retrofit2, которые я использую для общения с сервером. Okhttp не позволяет напрямую передавать кириллицу в GET и POST запросах. Чтобы обойти это ограничение, я добавил кодирование перед передачей данных на сервер с помощью URLEncoder.encode(строка, "UTF-8");
и декодирование после приема данных с сервера с помощью URLDecoder.decode(строка, "UTF-8");
. Кроме того, понадобилось увеличить длину всех столбцов VARCHAR в MySQL в три раза (т.к. один символ кириллицы в String соответствует трём символам в UTF-8). Надеюсь, мой опыт поможет кому-то ещё.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый деньНеобходимо удалить поля (заменить их значения на NULL), размер которых меньше 10 символов)
Добрый день! Возник вопрос, как удалить последний символ (при условии, что этот символ - пробел) в строке (база MySQL)?
Как angular 2+ взаимодействовать(запись, чтение, обнова) с базой данных (например MySQL)? Как развернуть базу на внутреннем сервере приложения? (тот...
Помогите разрулить потокиЯ не буду предоставлять код, мне нужна просто идея