jonathan
  • 0
Новичок

Ошибочное восстановление базы данных, проблема с кодировкой

  • 0

Накосячил в настройках с W3 Total Cache (пытался импортировать все медиа в свою библиотеку, не получилось, сломал все ссылки на каждую картинку). Поэтому я сделал свою последнюю резервную копию базы данных, скопировал/вставил таблицы _post и _postmeta в свой файл phpmyadmin. Он вернул ссылки и изображения, как и ожидалось, но теперь все французские символы (Ã, é, è и т. д.) отображаются неправильно.

Я взял резервную копию из плагина WP-DBManager, который, похоже, неправильно обрабатывает UTF-8. Какой самый быстрый способ исправить проблему?

Спасибо

Отредактировано для получения более подробной информации: заголовок резервной копии SQL

DROP TABLE IF EXISTS `hojd_posts`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;

Однако у меня есть эти плохо закодированные символы, поступающие непосредственно в мои команды sql (например: français для «français»)…

Share
  1. Возможно, вы сможете решить эту проблему, если у вас есть текстовый редактор с хорошей поддержкой кодирования. Таким образом, вы можете переключаться между кодировкой Latin 1 и UTF-8, пока не получите правильную комбинацию. Я использую SubEthaEdit, который может конвертировать, а также переинтерпретировать файл при изменении кодировки.

    Они ç должны быть закодированы как c3 a7 в UTF-8, когда вы просматриваете их как байты. Что здесь может произойти, так это то, что файл сначала был интерпретирован как Latin 1, где c3 a7 означает ç, а затем сохранен как UTF-8, где ç сохранен как c3 83 c2 a7 . Вам нужна c3 a7 версия.

    Чтобы вернуться к хорошему ç, нужно открыть файл как UTF-8, сохранить его как Latin-1, а затем открыть его снова, как если бы это было UTF-8.

    Сделав это, вы можете импортировать файл в MySQL, но указать, что это UTF-8, иначе MySQL может попытаться интерпретировать его как Latin 1, и вы все равно будете иметь ç символы.

    • 0
  2. У меня была аналогичная проблема с немецкими умлаутами. Проблема также возникла при экспорте базы данных с помощью phpmyadmin. Мое решение состояло в том, чтобы экспортировать базу данных с помощью инструмента командной строки mysql и параметра «—default-character-set=»utf8».

    Другой подход, если у вас нет доступа к оболочке Linux: установите и используйте MySQLDumper.

    • 0
  3. Распространенная проблема со старыми базами данных WordPress и даже с более новыми заключается в том, что таблицы базы данных устанавливаются как latin-1, но содержимое на самом деле кодируется как UTF-8. Если вы попытаетесь экспортировать как UTF-8, MySQL попытается преобразовать (предположительно) данные Latin-1 в UTF-8, что приведет к двойному кодированию символов, поскольку данные уже были UTF-8.

    Решение состоит в том, чтобы экспортировать таблицы как latin-1. Так как MySQL считает, что они уже latin-1, он выполнит прямой экспорт.

    1. Измените набор символов с «latin1» на «utf8».

    Так как выгруженные данные не были преобразованы в процессе экспорта, на самом деле это данные в кодировке UTF-8.

    1. Создайте новую таблицу как UTF-8. Если ваша команда CREATE TABLE находится в файле дампа SQL, измените набор символов с «latin1» на «utf8».

    2. Импортируйте свои данные в обычном режиме. Поскольку у вас есть данные в кодировке UTF-8 в файле дампа, объявленный набор символов в файле дампа теперь UTF-8, а таблица, в которую вы импортируете, — UTF-8, все пройдет гладко.

    • 0

Оставить ответ

You must login to add an answer.