Изучаем SQL. №14. UTF-8 данные в консоли Linux

Изучаем SQL

Если вы уже сделали сайт, тогда пора его расскручивать. Покупайте и используйте контекстную рекламу с https://vinograd.io.

Все уроки данного цикла были проведены на Windows с участие OpenServer. Но, если вы использовали для практических работ Linux сервер, тогда у вас были явные проблемы с кодировкой UTF-8 и выводом кириллических символов в консоли linux. Причиной есть установленная кодировка latin1 по-умолчанию. Посмотреть кодировку можно командой:

show variables like 'char%';

Данная проблема довольно легко решается. Для тестов я использовал Debian 8.
В официальном руководстве ubuntu советуют внести изменения в файл /etc/mysql/my.cnf. Но вы должны понимать, что при первом же обновлении эти настройки сотрутся и станут по умолчанию. Как все таки добиться стабильного изменения кодировки подсказано в этом же файле в самом конце, в строчке !includedir /etc/mysql/conf.d/ .
То есть, он подгружает все настройки из conf.d. Так создадим там файл с настройками:
sudo gedit /etc/mysql/conf.d/utf8_set.cnf

И вносим информацию:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

Перезапускаем сервер:
sudo service mysql restart

и проверяем:
Изучаем SQL. №14. UTF-8 данные в консоли Linux

Теперь все кириллические данные в ваших базах будут корректно отображаться.

Изучаем SQL. №14. UTF-8 данные в консоли Linux

2 идей о “Изучаем SQL. №14. UTF-8 данные в консоли Linux

  1. Wolodymyr

    Огромное спасибо за чёткую информацию.
    Всё заработало, кириллица в utf8 теперь нормально отображается после экспорта данных из файла в utf-8 в таблицу.
    Кстати, чтобы правильно всё отображалось, нужно саму базу создавать уже с этими измененными на utf-8 параметрами, потому как (как я догадываюсь) в базе при создании остаются данные о кодировке и просто так не выходило корректно просмотреть из «старой» базы данные в utf8, даже если создаю новые таблицы и втягиваю в них новые данные.

    Вопрос: Если есть файлы U (в utf8) и W(в 1256 кодировке), и мне надо создать таблицу в базе из данных этих двух файлов, как мне втянуть в таблицу данные из этих двух файлов корректно?
    -А как узнать, в какой кодировке создана база (ну вот например я не мог просмотреть корректно чужую базу) ? И если я работаю с разными кодировками, как «на лету» переключать эти кодировки, чтобы записи корректно отображались?
    Например, захочу я просмотреть в одном отображении (не знаю как правильно, представлении?) данные из двух разных баз X_BASE и Y_BASE, из разных таблиц, которые в разных кодировках (допустим, я получил откуда-то базу в Х-кодировке, у меня имеется база в Y-кодировке, а я работаю в UTF-8).
    -Можно ли работать с разными базами одновременно? X_BASE (таблица-x1, таблица_x2) и Y_BASE (таблица_y1, таблица_y2)
    -Как обрабатывать таблицы с разными кодировками так, чтобы они данные корректно отображались?
    -Если есть файлы U.txt (в utf8) и W.txt (в windoz-ной кодировке), и Q.txt (в какой-то инной кодировке) и мне надо создать таблицу в базе из данных этих трёх файлов, как мне втянуть в таблицу данные из этих файлов корректно? Или возможно, опять же, они автоматически втянутся в той кодировке, в которой создана моя база?

    Извините за кучу вопросов, всё очень интересно!
    Приступаю к изучению Пайтона, по Вашим лекциям. Просмотрел темы лекций. А можно Вас попросить осветить тему, как в Пайтоне работается с MySql. Было бы здорово работать уже с тем, что прошел и применять на практике. Ведь материала достаточно для простой работы, чтобы стартовать. И темы лекций как бы пересекались между собой. 🙂
    Спасибо.

    Или, например, я импортирую данные в свою базу Z_BASE в кодировке UTF-8 из X_BASE (в кодировке X) и Y_BASE (в кодировке Y). Таким образом, я буду иметь в таблице данные в разной кодировке или данные на лету приведутся к UTF-8?
    Как мне это всё «устаканиить»

    1. admin Автор поста

      Пример с импортированием данных из файла был приведен для более быстрого заполнения таблицы на первых стадиях изучения MySQL. В дальнейшем вы будете все равно работать с базой через призму какого-то языка, того же python или php, где уже наверняка решены подобные вопросы. На данный момент пока не могу дать четкий ответ, но, если найду решение, то обязательно сообщу.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.