Я использую эмодзи в моем проекте. Что персонажи сохраняются (??) в базе данных MySQL. Я использовал базу данных, параметры сортировки по умолчанию в utf8mb4_general_ci
.
Это шоу
1366 неправильные строковое значение: '\xF0\x9F\x98\х83\xF0\x9F...' для столбца 'Примечание' в строке 1
базы данных: изменение параметров сортировки базы данных по умолчанию utf8mb4
.
таблицы: таблица символов Изменение параметров сортировки как установка utf8mb4 сличить utf8mb4_bin`.
Запрос:
ALTER TABLE Tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
INSERT INTO tablename (column1, column2, column3, column4, column5, column6, column7)
VALUES ('273', '3', 'Hdhdhdh😜😀😊😃hzhzhzzhjzj 我爱你 ❌', 49, 1, '2016-09-13 08:02:29', '2016-09-13 08:02:29')
utf8mb4
в подключение к базе данных: $database_connection = new mysqli($server, $user, $password, $database_name);
$database_connection->set_charset('utf8mb4');
Шаг 1, изменить вашу базу данных'кодировка по умолчанию:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
Шаг 2, Установите кодировку при создании таблицы:
CREATE TABLE IF NOT EXISTS table_name (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
или изменять таблицы
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name modify name text charset utf8mb4;
Если вы используете Гумз + и MySQL + Java, вы можете использовать:
Это может быть использовано :
В вышеуказанном случае это одно из решений для хранения ваших смайликов в вашей системе.
Шаги, чтобы использовать его:
Библиотека: импорт Java.чистая.URLDecoder; импорт Java.чистая.Средств кодирования;
Пример кода:
import java.net.URLDecoder;
import java.net.URLEncoder;
public static void main(String[] args) {
//SpringApplication.run(ParticipantApplication.class, args);
System.out.println(encodeStringUrl("🇺🇸🇨🇳🇯🇵🇩🇪🔳🔺🆔🆔🆑3⃣5⃣3⃣‼〽➗➗🎦🔆🎦🔆♋♍♋♍⬅⬆⬅⬅🛂🚹🛂🛄🚳🚬💊🔧💊🗿 "));
System.out.println(decodeStringUrl("Hello+emoticons%2C%2C%F0%9F%98%80%F0%9F%98%81%F0%9F%98%8A%F0%9F%98%8B%F0%9F%98%8E%F0%9F%98%8A%F0%9F%98%8D%E2%98%BA%F0%9F%98%98%E2%98%BA%F0%9F%98%91%F0%9F%98%87%F0%9F%98%98%F0%9F%98%8B%F0%9F%90%84"));
}
public static String encodeStringUrl(String url) {
String encodedUrl =null;
try {
encodedUrl = URLEncoder.encode(url, "UTF-8");
} catch (UnsupportedEncodingException e) {
return encodedUrl;
}
return encodedUrl;
}
public static String decodeStringUrl(String encodedUrl) {
String decodedUrl =null;
try {
decodedUrl = URLDecoder.decode(encodedUrl, "UTF-8");
} catch (UnsupportedEncodingException e) {
return decodedUrl;
}
return decodedUrl;
}
Я обновил свою базу данных и таблицу повышен с в utf8 в utf8mb4. Но ничего не работает для меня. Потом я пытался обновить тип данных столбца блоб, к счастью, он работал на меня, а данные были сохранены. Даже мои базы данных и таблицы оба кодировку utf8 по сопоставлению utf8_unicode
Обе базы данных и таблиц должны иметь кодировку utf8mb4
и сортировки utf8mb4_unicode_ci
.
При создании новая база данных вы должны использовать:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Если у вас есть существующей базе данных и вы хотите добавить поддержку:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
Также нужно *установить правильный набор символов и сопоставление** для ваших таблиц:
CREATE TABLE IF NOT EXISTS table_name (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
или изменить его, если вы'ве получил существующие таблицы с большим количеством данных:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Обратите внимание, что utf8_general_ci
больше не рекомендуется. См. соответствующий вопрос & а:
Что's разница между utf8_general_ci и utf8_unicode_ci на переполнение стека.
Команда для изменения столбца:
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME TYPE;
И мы должны использовать Blob тип = ``
Например, чтобы изменить как под:-
ALTER TABLE messages MODIFY content BLOB;
Я проверил, что последний MySQL и другими базами данных Дон'т необходимость''
для использования в команду на имя_таблицы, имя_столбца и т. д.
Извлечение и сохранение данных:
Напрямую сохранить содержание чата для колонки и для получения данных, выборка данных в виде массива байтов (байт[])
из столбца БД и затем преобразовать его в строку, например (Java-код)
new String((byte[]) arr)
Мой ответ только добавляет Selvamani П ответ.
Вам также может понадобиться изменить любой набор имен запросов в формате utf8с
установить имена utf8mb4`. Что сделал трюк для меня.
Кроме того, это большую статью в порт ваш сайт из utf8 в utf8mb4. В частности, в статье 2 хороших точек по индексам и восстановление таблиц после их преобразования в utf8mb4:
Показатели
для преобразования из utf8 в utf8mb4, максимальная длина столбца или ключевой индекс является неизменной в байтах. Таким образом, он меньше В плане характеров, так как максимальная длина персонаж теперь четыре байта вместо трех. [...] InnoDB механизм хранения имеет максимальную длину индекса 767 байт, поэтому для utf8 или utf8mb4 столбцы, вы можете индексировать максимум 255 и 191 символов, соответственно. Если у вас уже есть utf8 столбцы с индексами больше, чем 191 символов, вам нужно будет проиндексировать меньшее количество символов при использовании utf8mb4.
РЕМОНТ СТОЛОВ
после обновления сервера MySQL и внесение необходимых изменений и GT; уже было сказано выше, ремонт и оптимизация всех баз данных и таблицы. Я не сделал это сразу после обновления (я не думаю, что это была необходима, так как все, казалось, работает нормально на первый взгляд), и столкнулся с некоторыми странными ошибками, где высказывания обновления не было эффект, хотя никаких ошибок не выдается.
Подробнее о запросах на ремонт столов по статье.
Главное не'т было упомянуто в вышеприведенных ответов, которые,
Нам нужно передать строку запроса с параметрами в"useUnicode=да"
В и в"characterEncoding=UTF-8 в"
в в строке подключения
Что-то вроде этого
mysql://USERNAME:PASSWORD@HOSTNAME:PORT/DATABASE_NAME?useUnicode=yes&characterEncoding=UTF-8
Ну, вам не нужно менять всю кодировку БД. Вместо этого вы можете сделать это путем изменения столбца блоб тип.
Изменение таблицы сообщения изменение содержимого больших двоичных объектов;
Поддержка emoji для применения, технология стека в MySQL, Ява, springboot, гибернация
Применить ниже изменения в MySQL для поддержки Unicode.
Изменение базы данных <база данных-имя> набор символов = utf8mb4 сличить = utf8mb4_unicode_ci;
Изменение таблицы <таблица-имя> преобразовать в кодировка utf8mb4 сличить utf8mb4_unicode_ci;
Подключение к БД - изменение в JDBC URL-адрес:
с JDBC:MySQL базы://имя localhost:3306/<база данных-имя>?useUnicode=да&characterEncoding=UTF-8
не
Примечание - Если выше шаг не работает, пожалуйста, обновите MySQL-разъем версии 8.0.15. (в MySQL 5.7 работает с разъемом версии 8.0.15 для поддержки юникода)