Как исправить кодировку таблиц


  • Помощь


  • Хостинг


  • Базы данных


  • Как изменить кодировку для всех таблиц в MySQL

Вы установили MySQL, создали таблицы и наполнили их данными, а в ответ отображается «абракадабра»? Дело в неправильно указанной кодировке. Для того чтобы данные отображались корректно, нужно изменить параметр кодировки для каждой таблицы.

В базе данных могут быть сотни таблиц, поэтому воспользуйтесь следующим решением для оперативной смены кодировок:

  1. 1.

    Войдите в phpMyAdmin и выберите необходимую базу данных из списка, кликнув по её названию:

  2. 2.

    В столбце «Сравнение» отображается сопоставление кодировки базы данных:

  3. 3.

    Скопируйте запрос ниже:

    SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET нужная_кодировка COLLATE сопоставление;') as sqlcode
    FROM `information_schema`.`TABLES` t
    WHERE 1
    AND t.`TABLE_SCHEMA` = 'имя_базы'
    ORDER BY 1

    где:

    • нужная_кодировка — кодировка, которую нужно применить;

    • сопоставление — сопоставление кодировки базы данных (шаг 2 — столбец «Сравнение»);

    • имя_базы — имя базы данных.

  4. 4.

  5. 5.

    Вставьте запрос из шага 3 в окно запроса MySQL и выполните его, нажав Вперёд. В примере ниже мы сформировали список запросов для всех таблиц базы данных, который нужно выполнить, чтобы изменить кодировку на utf8 и на сопоставление кодировки utf8_general_ci.

  6. 6.

    В качестве ответа на запрос появится список запросов для смены кодировки каждой таблицы. Раскройте вкладку Параметры, установите чекбокс напротив пункта Полные тексты и нажмите Вперёд:

  7. 7.

  8. 8.

    Вернитесь на вкладку SQL. Вставьте запросы в окно запроса MySQL и нажмите Вперёд:

Готово, вы успешно изменили кодировку во всех таблицах базы данных.

Спасибо за оценку!
Как мы можем улучшить статью?

Нужна помощь?
Напишите в службу поддержки!

Исправляем ошибки кодировки таблиц

21.10.2021

1728

В результате проверки системы, Битрикс указал, что есть ошибки в Базе данных, но иногда автоматически он не может всё исправить, и тут приходится исправлять своими ручками.

Нажимая на знак вопроса мы видим подсказку от Битрикса где сообщает, что кодировка текущих наших таблиц, должна совпадать с кодировкой базы данных.

Подробное описание ошибки

Если перейдем по ссылке на «журнал проверки системы», то увидим список тех таблиц, где не совпали кодировки, вот нам они и нужны, на скриншоте пометил стрелочками.

Журнал проверки системы

SQL запрос: 

ALTER TABLE b_iblock_property_feature CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Где b_iblock_property_feature — это название таблицы, у Вас могут быть другие.

Таким образом я выписал и составил список sql запросов для всех своих таблиц из журнала.

ALTER TABLE b_iblock_property_feature CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_block CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_demo CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_domain CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_file CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_hook_data CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_manifest CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_placement CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_repo CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_site CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_syspage CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_template CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_landing_template_ref CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_main_mail_blacklist CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_main_mail_sender CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_messageservice_message CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_messageservice_rest_app CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_messageservice_rest_app_lang CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_mobileapp_app CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_mobileapp_config CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_numerator CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_numerator_sequence CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rating_voting_reaction CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_ap CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_ap_permission CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_app CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_app_lang CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_app_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_event CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_event_offline CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_placement CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_stat CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_rest_stat_method CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_seo_service_subscription CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_user_profile_history CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_user_profile_record CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_utm_iblock_6_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_utm_iblock_8_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_uts_iblock_6_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE b_uts_iblock_8_section CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

После того как Вы собрали список SQL запросов, заходим в админку сайта битрикс (Настройки — Инструменты — SQL-запрос) или по пути, вставляете после адреса сайта /bitrix/admin/sql.php

SQL запросы

Возврат к списку

Как исправить: Кодировки таблиц имеют ошибки, общее число ошибок: , из них автоматически могут быть исправлены: 0

7 сентября 2020

Как исправить ошибку на платформе 1С битрикс :
Ошибка! Кодировки таблиц имеют ошибки, общее число ошибок: , из них автоматически могут быть исправлены: 0. А также ошибку отсутствия русского языка в highload-блоках
тексОшибки.png

Структура базы данных
Замечание. Не проверено из-за ошибок кодировки таблиц

Показываю на примере хостинга reg.ru.

Нажимаем на знак вопроса, справа от текста ошибки, и смотрим журнал проверки системы:
……………………………………………………………………………..
Кодировка поля «UF_FULL_DESCRIPTION» таблицы «b_emarketcolor» (latin1) отличается от кодировки базы (utf8)
Кодировка поля «UF_XML_ID» таблицы «b_emarketcolor» (latin1) отличается от кодировки базы (utf8)
Кодировка поля «UF_LINK» таблицы «b_emarketcolor» (latin1) отличается от кодировки базы (utf8)
Кодировка таблицы «b_emarketcomments» (latin1) отличается от кодировки базы (utf8)
…………………………………………..

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

заходимвпанельуправлениябазойданных.png

Заходим в панель управления phpMyAdmin, выбираем базу, находим нужную таблицу с неправильной кодировкой.

Панель управления phpmyadmin

Нажимаем кнопку структура и исправляем. Нажимаем кнопку сохранить справа.

исправляемкодировку.png

Входим в меню Операции сверху.

менюоперации.png

Также изменяем на нужную кодировку. Нажимаем на кнопку вперед справа.
Таким же образом поправляется ошибка в highload-блоках при отсутствии русского языка. Вместо него видим только знаки вопроса ???????.

Возврат к списку

Время на прочтение
3 мин

Количество просмотров 22K

Боремся с кракозябрамиВ связи с тем, что довольно много людей обращается с просьбой помочь исправить проблему с кодировками MySQL, решил написать статью с описанием, как «лечить» наиболее часто встречающиеся случаи.

В статье описывается не то, как первоначально правильно настроить кодировки MySQL (об этом уже довольно много написано), а о случаях, когда есть довольно большие таблицы с неправильными кодировками и нужно всё исправить.

Самое плохое в неправильно настроенных кодировках — то, что зачастую проблему сложно обнаружить, и с первого взгляда может казаться, что сайт работает правильно, и никаких проблем нет.

Небольшое отступление. Sypex Viewer

В какой-то момент надоело отправлять людей в громоздкий phpMyAdmin, и была написана крошечная утилитка Sypex Viewer. Она представляет собой один PHP-файл, использует современные Web 2.0 технологии AJAX, JSON и другие. Основные задачи, которые ставилась при создании — минимальный вес, и максимальное удобство и скорость работы. В дальнейшем в примерах будут скриншоты из неё, но все те же действия можно сделать и в phpMyAdmin.

Данные в cp1251 таблицы в latin1

Наверное, самая популярная проблема. Когда данные в кодировке cp1251 (Windows-1251), а у таблиц указана кодировка по умолчанию latin1. Такие ситуации возникают в следующих случаях:

  • при неграмотном обновлении с версии MySQL меньше 4.1 на более новые;
  • очень часто возникает в «буржуйских» скриптах, которых вполне устраивает кодировка по умолчанию, и они «забывают», что неплохо бы указывать кодировку, как таблиц, так и соединения;
  • также бывают случаи, когда переезжают с одного сервера (у которого установлена дефолтная кодировка cp1251, в частности, так сделано в Денвере) на другой (у которого стоит стандартная кодировка latin1).

В результате на сайте вроде как всё нормально, но если посмотреть в Sypex Viewer, то русские символы будут выглядеть как «кракозябры» (как их обычно называют пользователи).

В статье я рассмотрю один из вариантов преобразование кодировок с помощью бесплатного php-скрипта Sypex Dumper, в качестве готового решения.

  1. На вкладке «Экспорт» выбираем нужные таблицы.
  2. Кодировка должна быть auto (остальные параметры неважны, можно комментарий добавить, например, «Дамп перед исправлением кодировки»).
  3. Нажимаем «Выполнить». Теперь у нас есть бэкап (его в любом случае желательно делать при любых преобразованиях базы данных).
  4. Переходим на вкладку «Импорт»
  5. Выбираем только что сделанный файл бэкапа.
  6. Выбираем кодировку cp1251 и помечаем опцию «Коррекция кодировки».
  7. Нажимаем «Выполнить».
  8. Вот и всё заходим в Sypex Viewer, чтобы убедиться, что русские символы выводятся корректно.

Данные и таблицы в utf8, но кодировка соединения latin1

Теперь рассмотрим более запущенный случай. Набирающая популярность в последнее время проблема, в связи с повальным увлечением UTF-8. Создатели софта стали переводить свои детища на UTF-8, но и тут не всё так гладко, как хотелось бы.

Возникает проблема в основном в случае, когда у таблиц указана кодировка UTF-8, данные в UTF-8, но кодировка соединения установлена по умолчанию latin1 (типичный пример, vBulletin 4, хоть там и есть в конфигах настройка кодировки соединения, но она закомментирована по умолчанию).

В результате в MySQL присылаются данные в UTF-8, но поскольку указана кодировка соединения latin1, то MySQL пытается преобразовать данные из latin1 в UTF-8. В итоге русские символы выглядят так:

Ситуация более запущенная, но исправляется проблема почти также, как в первом случае, только в пункте 2 нужно выбрать кодировку latin1, а в пункте 6 нужно выбрать utf8 кодировку.

Изменение кодировки

Также часто встречающаяся проблема преобразования кодировки из cp1251 в UTF-8. До выполнения этого шага обязательно убедитесь, что русские символы у вас правильно показываются в Sypex Viewer или phpMyAdmin, если это не так, то предварительно исправьте кодировку.
Итак, опять заходим в Sypex Dumper.

  1. Во вкладке «Экспорт» выбираем нужные таблицы.
  2. Устанавливаем кодировку, в которую хотите преобразовать таблицы, в данном случае utf8.
  3. Нажимаем «Выполнить».
  4. После чего заходим в «Импорт» и выбираем нужный файл.
  5. Выставляем кодировку utf8 и опцию «Коррекция кодировки».
  6. Нажимаем «Выполнить».
  7. Вот и всё таблицы в UTF-8. Не забываем, что нужно еще установить кодировку соединения, сконвертировать ваши скрипты и шаблоны в UTF-8, выставить правильную кодировку в заголовках.

Кодировка соединения

Не забываем, что после исправлений кодировки, нужно убедиться, что ваши скрипты используют правильную кодировку соединения (в принципе, это будет сразу видно, они будут неправильно показывать русские символы без нужной кодировки соединения). У некоторых она выставляется в настройках, в некоторых придется добавить самостоятельно.

Для чего достаточно пройтись поиском по файлам, и найти где вызывается функция mysql_connect (или mysqli_connect). После этой строки нужно добавить строку которая укажет кодировку соединения.

mysql_query("SET NAMES 'cp1251'");

Где вместо cp1251, указать нужную кодировку соединения.

Не забывайте перед преобразованиями кодировок делать бэкап, тут как с презервативами, лучше пусть он будет и не понадобится, чем когда понадобится — его не будет.

P.S. Спасибо Шортикам за веселый контент для примеров.

Если в таблице вместо нужной информации вы увидели вопросы, иероглифы или другие непонятные знаки, это значит, вам надо разобраться, как поменять кодировку в Excel.  Эта функция доступна в самом Microsoft Office. Но избавиться от проблемы можно и другими методами.

непонятные иероглифы

Иногда мы получаем непонятные иероглифы

Что такое кодировка?

Компьютер воспринимает любую информацию, как набор цифр. Поэтому у каждого печатного знака есть свой код. Он состоит из чисел и букв латинского алфавита. Символы и соответствующие им числа — это и есть кодировка.

У неё есть несколько стандартов. Например, Koi-8, Unicode, Windows-1251, ASCII. И если файл с текстом сохранён, скажем, в Кои-8, в Excel он будет неправильно отображаться в Юникоде. Так как в этих наборах одним и тем же символам приписаны разные коды.

Как поменять кодировку в программе?

Для работы с таблицей, в которой используется стандарт, не заданный по умолчанию в программе, надо изменить кодировку. Существует несколько способов.

При помощи Notepad

Если в Экселе не получается превратить «кракозябры» в нормальный текст, откройте файл в программе «Notepad++». Она распространяется бесплатно. Настройте там отображение символов, а потом продолжайте работать в Excel.

Программа «Notepad++»

Откройте файл в программе «Notepad++»

  1. Создайте резервную копию документа. Или сохраните информацию из него в какой-нибудь другой таблице.
  2. Запустите Notepad.
  3. Перейдите в Файл — Открыть (File — Open) и укажите путь к таблице. В поле «Тип файла» поставьте «Все типы» («All types»). Или укажите конкретный формат. Таблицы имеют расширения .cvs, .xls, .xltm, xlam, .xlm. В Нотпаде текст отобразится без сетки. В нём ничего не надо редактировать.
  4. Справа внизу в строке состояния будет изображён стандарт, используемый сейчас.
  5. Откройте меню Кодировка (Encoding). Оно находится вверху окна.
  6. Нажмите «Преобразовать в UTF-8» («Convert to UTF-8»). Документ будет конвертирован в нужный формат. Этот стандарт Excel воспринимает нормально и не станет превращать в бессвязный поток странных символов.
  7. Теперь выберите, какие знаки необходимо использовать. В том же меню Encoding наведите выпадающий список. Он там один.
  8. Для русского языка выберите Кириллица — Windows-1251. Если текст, скажем, на арабском или греческом — отметьте соответствующий набор символов. В разных странах используются разные стандарты.
  9. Программа попросит подтвердить действие.
  10. Если это не помогло, попробуйте другие кириллические шрифты.
  11. Сохранять текст надо тоже в экселевском формате.

Работа в utf-8

Откройте файл в utf-8

Через интерфейс программы

Вот как сменить кодировку в Excel, используя встроенные возможности:

  1. Запустите программу. Не надо открывать заполненный документ. Нужен «чистый» лист.
  2. Перейдите во вкладку «Данные» в строке меню.
  3. На панели «Получать внешние данные» нажмите «Из текста».
  4. В списке «Тип файла» (он находится рядом с кнопкой «Отмена») выберите «Все» или «Любые». Так в окне будут отображаться форматы Excel, а не только .txt.
  5. Задайте путь к таблице.
  6. Откроется мастер импорта.
  7. В поле «Формат» можете выбрать желаемый стандарт.
  8. В области «Предварительный просмотр» показано, как будет выглядеть текст с отмеченным набором символов. Можете прокручивать список и искать, какая настройка подходит.
  9. Когда подберёте нужный вариант, нажмите «Готово».

встроенные возможности Excel

Можно использовать встроенные возможности

Как сохранить файл в определённой кодировке?

Можно сделать так, чтобы в сохранённом вами файле стояла определённая кодировка Excel.

  1. Нажмите на зелёную кнопку «Файл» (в Office 2007 надо кликнуть на логотип слева вверху).
  2. Параметры — Дополнительно.
  3. Прокрутите вниз до раздела «Общие».
  4. Кнопка «Параметры веб-документа».
  5. Вкладка «Кодировка».
  6. В поле «Сохранить документ как» укажите желаемое значение и нажмите «OK».

Ещё можно сделать так:

  1. Нажмите на «Файл» или логотип офиса.
  2. Выберите «Сохранить как…».
  3. Кликните на «Сервис». Там будет тот же самый пункт «Параметры веб-документа».

Сохранить файл

Как добавить в программы офиса новую кодировку?

Если ни один из стандартов не подошёл для вашего документа, добавьте новые.

  1. Пуск — Панель управления.
  2. «Программы и компоненты» или «Удаление программ».
  3. Нажмите на пункт Office или Excel (в зависимости от того, установлен ли у вас весь пакет продуктов Микрософт Офис или только Эксель).
  4. Кнопка «Изменить». Она над основной рабочей областью.
  5. Поставьте маркер в «Добавить или удалить» и кликните «Продолжить».
  6. Откройте ветку Общие средства — Многоязыковая поддержка.
  7. Нажмите на чёрную стрелочку рядом с нужным стандартом и включите функцию «Запускать на моём компьютере».
  8. Кликните «Продолжить» и дождитесь окончания процесса. Будут добавлены новые наборы.

В Excel можно поменять кодировку, если символы отображаются неправильно. Эта функция доступна в инструментарии программы. Но иногда используется сторонний софт.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти друг друга в лесу
  • Составь как можно больше предложений в past simple the mother learned the poem
  • Как найти сайт всем кто учится
  • Как найти продолжение в шапке профиля
  • Как найти шоколадку в икее роблокс

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии