Я не уверен, когда это впервые произошло.
У меня новый партнерский сайт дропшиппинга, и я получаю экспортированную копию каталога товаров от оптовика. Я форматирую и импортирую его в Prestashop 1.4.4.
На лицевой стороне сайта в тексте товара встречаются комбинации странных символов: Ã, Ã, ¢, â' и т.д. Они появляются вместо обычных символов, таких как , - : и т.д.
Эти символы присутствуют примерно в 40% таблиц базы данных, а не только в таблицах, посвященных конкретным продуктам, например ps_product_lang.
В другой ветке сайта говорится, что эта же проблема возникает, когда в строке подключения к базе данных используется неправильный тип кодировки символов.
В файле /config/setting.inc не упоминается строка кодировки символов, только MySQL Engine, который установлен на InnoDB, что соответствует тому, что я вижу в PHPMyAdmin.
Я экспортировал ps_product_lang, заменил все экземпляры этих символов на правильные, сохранил CSV файл в формате UTF-8 и повторно импортировал их с помощью PHPMyAdmin, указав UTF-8 в качестве языка.
Однако после нового поиска в PHPMyAdmin у меня теперь в ps_product_lang примерно в 10 раз больше экземпляров этих плохих символов, чем в начале.
Если проблема настолько проста, как указание правильного атрибута языка в строке подключения к базе данных, то где/как мне его установить и что для этого нужно?
Кстати, я попробовал выполнить эту команду в PHPMyAdmin, упомянутую в этой теме, но проблема осталась:
SET NAMES utf8
UPDATE: PHPMyAdmin говорит:
MySQL charset: UTF-8 Unicode (utf8)
Это тот же набор символов, который я использовал в последнем файле импорта, что вызвало больше повреждений символов. UTF-8 был указан в качестве charset файла импорта во время процесса импорта.
UPDATE2
Вот пример:
Люди действительно живут без привязиÃÆ'Ã'¢Ã¢ââ'¬Å¡Ã'¬Ã¯ââ'¬Â Ã'ï† покупая и беря напрокат фильмы онлайн, скачивая программное обеспечение, а также обмен и хранение файлов в Интернете.
UPDATE3
Я выполнил SQL-команду в PHPMyAdmin для отображения наборов символов:
Итак, возможно, мою базу данных нужно преобразовать (или удалить и создать заново) в UTF-8. Может ли это создать проблему, если сервер MySQL - latin1?
Может ли MySQL справиться с переводом содержимого в UTF8, но хранить его в latin1? Не думаю, что сможет, так как UTF8 - это супермножество latin1. Служба поддержки моего хостинга не отвечает уже 48 часов. Возможно, это слишком сложно для них.