PhpMyAdmin. Вопросы вместо русских букв

284
16 октября 2021, 09:30

У меня в phpMyAdmin вместо русских букв в таблице отображаются знаки вопроса. Я понимаю, что это проблемы с кодировкой, но не могу перекодировать уже готовую таблицу, чтобы она отображалась правильно. Подскажите, пожалуйста: что надо делать? Удалить старую базу и переписать заново её с нормальной кодировкой (у меня нормальная - utf8), к сожалению, невозможно, так как база состоит предположительно из десятков таблиц с сотнями строк. Спасибо за ответы.

Ход моей работы:

  1. Запущены все три службы ХАМРР (у меня ХАМРР 7.0.8).

  2. В терминале Линукса ввожу следующие пять команд:

    sudo mysql -S '/opt/lampp/var/mysql/mysql.sock'

    create database zveri;

    use zveri;

    create user 'z1'@'localhost' identified by '12345';

    grant all privileges on zveri.* to 'z1'@'localhost';

  3. Далее там же, в терминале, создаю таблицу и вставляю туда данные:

    source /opt/lampp/htdocs/CodeSamplesRus/createtable.sql;

    source /opt/lampp/htdocs/CodeSamplesRus/insertintotable.sql;

Терминал выдаёт сообщение о каких-то предупреждениях, которые не знаю, как прочитать:

Database changed Query OK, 5 rows affected, 10 warnings (0.03 sec) Records: 5 Duplicates: 0 Warnings: 10

Файлы созданы с кодировкой UTF-8 в ActiveState Komodo Edit 11.

createtable:

CREATE TABLE Information
( Nomer INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Odin CHAR(50) NOT NULL,
  Dva CHAR(100) NOT NULL
);

insertintotable:

USE zveri;
INSERT INTO Information VALUES
  (NULL, 'Раз', 'Вышел'),
  (NULL, 'Два', 'Зайчик'),
  (NULL, 'Три', 'Погулять'),
  (NULL, 'Четыре', 'На полянке'),
  (NULL, 'Пять', 'Поскакать');

В результате в таблице в phpMyAdmin отображается информация, показанная на скриншоте.

Интересно, что если зайти во вкладку Structure для таблицы Information, то Collation там будет равно latin1_swedish_ci. При чём тут шведская кодировка - совершенно неясно, но ладно. :)

  1. Пытаюсь перекодировать в Терминале. Сначала всю базу:

    alter database zveri character set utf8 collate utf8_unicode_ci;

    show create table Information;

Показывает:

ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1

Ничего не получилось.

  1. Затем пытаюсь перекодировать только таблицу, хоть это не совсем, по-моему, хороший способ (а если таблиц много - возиться с каждой по отдельности?)

    alter table Information convert to character set utf8 collate utf8_unicode_ci;

    show create table Information;

Показывает:

ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

В Терминале перекодировал. И во вкладке Structure тоже перекодировал. Однако в phpMyAdmin в самой таблице вместо данных русскими буквами всё равно остаются вопросы без изменений.

Как это исправить?

Answer 1

Обратите внимание на ваш 5й шаг. Вы сделали перекодировку таблицы. Теперь она готова для загрузки данных. Удалите старые данные (которые ????) и залейте по новой их в таблицы.

READ ALSO
Можете пожалуйста помочь, напишите что у меня не так. Я хочу что бы статьи были слева, а комментарии справа, но ничего не работает

Можете пожалуйста помочь, напишите что у меня не так. Я хочу что бы статьи были слева, а комментарии справа, но ничего не работает

Можете пожалуйста помочь, напишите что у меня не такЯ хочу что бы статьи были слева, а комментарии справа, но ничего не работает

98
Сохранение скриншота работы в Qt C++

Сохранение скриншота работы в Qt C++

Помогите пожалуйстаУ меня есть одна проблема, мне нужно сохранить результаты работы в программе в виде скриншота в папку, где находиться...

144
Ошибка при объявлении int - "initializer element is not constant"

Ошибка при объявлении int - "initializer element is not constant"

Начал изучать язык СиПытаюсь скомпилировать простенькую программку, и выбивает такую ошибку

285