@dro1d

Как исправить проблемы с кодировкой при переносе данных со старого сайта?

Есть старый сайт Х1 (самописный интернет магазин), и новый сайт Х2 (интернет магазин на wooCommerce). У обоих сайтов параметры кодировки БД одинаковые:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
При попытке перенести данные из Х1 в Х2 весь русский текст превращается в "???????-??????????". При переносе данных из Х2 в Х1 весь русский текст превращается в "Санкт-Петербург".
Используя сервис 2cyr.com/decode я выяснил, что на старом сайте Х2 все данные хранятся в utf8, но отображаются как win-1251. На новом все стандартно как у WordPress.
Вопрос: Как мне организовать корректное чтение данных, конвертирование, а затем сохранение?
  • Вопрос задан
  • 3030 просмотров
Решения вопроса 1
@dro1d Автор вопроса
Нашел решение проблемы. При чтении данных из первой БД задаю кодировку данных:
set names cp1251
Затем полученные данные конвертирую в UTF8 через iconv
При записи в первую БД достаточно лишь конвертировать данные в cp1251 через iconv
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Помимо проверки кодировки дампа, можете посмотреть в сторону Apache
Возможно в его настройках кодировка не соответствует вашей, что и вызывает проблему отображения, а с дампом все ок на самом деле.

как вариант может помочь принудительное указание кодировки в .htaccess
в одном из проектов на шаред-хостинге мне хватило первых трех директив, чтобы решить похожую проблему.
AddDefaultCharset UTF-8
AddCharset UTF-8 .php

php_value default_charset "UTF-8"

php_value iconv.input_encoding "UTF-8"
php_value iconv.internal_encoding "UTF-8"
php_value iconv.output_encoding "UTF-8"

php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_output UTF-8
php_value mbstring.encoding_translation On
php_value mbstring.func_overload 6
Ответ написан
Комментировать
scherbuk
@scherbuk
могу посоветовать проверить кодировку дампа бд
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы