FitTech
@FitTech

Как изменить кодировку с помощью миграций?

Сейчас при записи рус.слов в БД получаю ???????. Как с помощью миграции изменить кодировку бд под русский текст?
  • Вопрос задан
  • 265 просмотров
Пригласить эксперта
Ответы на вопрос 2
za4me
@za4me
Человек
Не могу сказать наверняка, но может быть поможет.
$tableOptions = null;
if ($this->db->driverName === 'mysql') {
    // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
    $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
}

В любом случае, что мешает назначить кодировку при создании БД?
Ответ написан
Комментировать
Isolution666
@Isolution666
Full-Stack Developer
Могу предположить, что вы писали сайт на Notepad++ или таблица в Excel в кодировке windows 1251
Потому что, если писать проекты на IDE, там выставляется кодировка ещё до создания проекта, и все последующие файлы создаются в одной кодировке из настройки.

Если я угадал с таблицей, то создай пустой документ Excel, перейди во вкладку "данные", "получение внешних данных", "из текста", выбираешь таблицу, выставляешь кодировку utf-8, разделитель ";", и сохраняешь как csv файл, именно в этой кодировке, теперь можешь заливать в БД и не париться, всё будет по русски без вопросов.

Могу ещё предположить, что таблица создавалась не в той кодировке, зайди в PhpMyAdmin, и посмотри, что там за кодировка у самой таблицы, и у каждой строки в таблице, если сайт в UTF-8, то в таблице должно быть utf_8_general_ci - кажется так пишется.
---
Миграции - https://yiiframework.com.ua/ru/doc/guide/2/db-migr...
Создание и удаление таблиц - https://metanit.com/web/php/7.3.php
Создание базы данных MySQL - php.net/manual/ru/function.mysql-create-db.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы