Для пользователей Mac: Шаг 1: Установите Android Studio
Шаг2: Откройте терминал и введите
cd
blockquote>Шаг 3. Введите ниже указанную команду, изменив имя пользователя:
export PATH = "/ Users / userName / Library / Android / sdk / platform-tools": $ PATH
blockquote >
SET collation_connection = 'utf8_general_ci';
, затем для ваших баз данных
ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
MySQL иногда пробирается туда, где нет разумной причины.
У меня была таблица, первоначально созданная с помощью CHARSET = latin1. После преобразования таблицы в utf8 некоторые столбцы не были преобразованы, однако это было не совсем очевидно. Вы можете попробовать запустить SHOW CREATE TABLE my_table;
и посмотреть, какой столбец не был преобразован, или просто исправить неверный набор символов в проблемном столбце с запросом ниже (изменить длину varchar и CHARSET и COLLATE в соответствии с вашими потребностями):
ALTER TABLE `my_table` CHANGE `my_column` `my_column` VARCHAR(10) CHARSET utf8
COLLATE utf8_general_ci NULL;
CONVERT(column1 USING utf8)
Решает мою проблему. Где column1 - столбец, который дает мне эту ошибку.
После внесения исправлений, перечисленных в верхнем ответе, измените настройки вашего сервера по умолчанию.
В вашем файле /etc/my.cnf.d/server.cnf или где он находится, добавьте по умолчанию используется раздел [mysqld], поэтому он выглядит так:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
Источник: https://dev.mysql.com/doc/refman/5.7/en/charset-applications .html
Вы должны установить для вашей кодировки таблицы и кодирования соединения значение UTF-8
:
ALTER TABLE keywords CHARACTER SET UTF8; -- run once
и
SET NAMES 'UTF8';
SET CHARACTER SET 'UTF8';
myDb
ПАРАМЕТР ПО УМОЛЧАНИЮ УСТАНОВИТЬ utf8 COLLATE utf8_bin. Будет ли это работать? Это делается так, чтобы это повлияло на все мои таблицы, а не только на одну из них
– Click Upvote
17 June 2009 в 19:32
В общем, лучший способ - изменить сортировку таблицы. Однако у меня есть старое приложение и на самом деле не могу оценить результат, имеет ли это побочные эффекты. Поэтому я попытался каким-то образом преобразовать строку в другой формат, который решил проблему сортировки. То, что я нашел, - это выполнить сравнение строк, преобразуя строки в шестнадцатеричное представление его символов. В базе данных это делается с помощью HEX(column).
. Для PHP вы можете использовать эту функцию:
public static function strToHex($string)
{
$hex = '';
for ($i=0; $i<strlen($string); $i++){
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return strToUpper($hex);
}
При выполнении запроса базы данных исходная строка UTF8 должна быть сначала преобразована в строку iso (например, с помощью utf8_decode()
в PHP), прежде чем использовать его в БД. Из-за типа сопоставления база данных не может содержать символы UTF8 внутри, поэтому сравнение должно работать, хотя это изменяет исходную строку (преобразование символов UTF8, которые не встречаются в символьной кодировке ISO, приводит к? Или они полностью удаляются). Просто убедитесь, что при записи данных в базу данных вы используете одно и то же преобразование UTF8 в ISO.
Используйте следующую инструкцию для ошибки
, будьте осторожны, когда ваши данные берут резервную копию, если данные содержатся в таблице.
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;