Изменение кодировки сайта на UTF-8 (часть 2) | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Изменение кодировки сайта на UTF-8 (часть 2)

Изменение кодировки сайта на UTF-8 (часть 2)

Это пост для разработчиков, продолжение статьи Изменение кодировки сайта на UTF-8 (часть 1)

Импортируйте большую базу данных на общий хостинг cPanel

Здесь не так много возможностей. Если у вас нет SSH-доступа к хостингу, вам необходимо заархивировать sql-файл и загрузить его по FTP на сервер. Тем временем вы создаете новую базу данных и пишете письмо в службу поддержки для импорта таблиц в новую базу данных. Не все хостинг-провайдеры разрешают доступ по SSH.

Другой вариант — попытаться разделить файл .sql на несколько частей, каждая размером менее 50 МБ.

Если у вас есть доступ по SSH, вы можете импортировать или экспортировать их самостоятельно через зашифрованное SSH-соединение с хост-сервером.

В Linux я могу сделать это с помощью одной команды через зашифрованный туннель SSH и без предварительной загрузки файла на сервере ??????

Я запускаю команду со своего компьютера и из каталога, в котором находится файл на основе db.sql:

кот db.sql | ssh -p 23 cpanel_user@your.site.com mysql -u db_user -p’db_password ‘имя_бд

Стандартный порт для SSH — 22, но для некоторых хостингов он равен 23 и передается в параметре «p». Если ваш публичный ключ хостинга не был введен заранее, то приведенная выше команда запросит у вас пароль cPanel.

Происходит вот что: на моей машине я запускаю cat db.sql, которая начинает выводить все данные из архива базы данных на стандартный вывод. Они отправляются через зашифрованное соединение с компьютером your.site.com через SSH-порт 23, и там на удаленном компьютере выполняется команда mysql, которая начинает получать данные и заливать их в базу данных db_name.

Создание резервной копии базы данных через SSH-соединение

Я также могу сделать обратное и снова создать резервную копию базы данных через зашифрованное соединение.

ssh -p 23 -C cpanl_user@your.site.com mysqldump -u db_user -p’db_password ‘db_name | gzip > db_name.sql.gz

С помощью этой команды я устанавливаю зашифрованное соединение с моей машины на машину на вашем хостинге your.site.com через SSH-порт 23, поскольку -C включает сжатие данных. Здесь на удаленном компьютере выполняется команда mysqldump, которая извлекает описания таблиц и данные для всей базы данных. Если пароль базы данных содержит символ «, он должен быть записан как \». После извлечения архивных данных они начинают передаваться в сжатом и зашифрованном виде на мою машину, где я запускаю команду gzip, которая берет данные и сохраняет архив db_name.sql.gz локально в файл. Красота! ??????

Продолжаю рассказ о спасении сайта из части 1 (см. Ссылку в начале).

В порядке. База данных успешно загружена на хостинг. К сожалению, мы еще не закончили. Чтобы кириллица отображалась правильно, сначала необходимо посмотреть в коде, если где-то программа выполняет запрос mySQL SET NAMES ‘cp1251’.

Вы можете найти это на локальном компьютере в главном веб-каталоге с помощью команды:

grep -r "УСТАНОВИТЬ ИМЕНА" *

Если вы его найдете, измените его на SET NAMES ‘utf8’;

Этот запрос делается сразу после подключения к базе данных. Может быть другой запрос:

«УСТАНОВИТЬ НАБОР СИМВОЛОВ utf8»

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

Убедитесь, что все файлы, которые печатают HTML-тег с кодировкой, выглядят следующим образом:

< мета http-Equiv ="Тип содержимого" содержание ="текст / html; charset = utf-8" />

А теперь самое интересное — все файлы на сайте должны иметь кодировку UTF-8. Это все файлы, содержащие кириллицу .php, .js и .tpl, если используются шаблоны. Шаблоны обычно не содержат текста, только такие переменные, как {$ VAR}, но они также участвуют в кодировке символов. У меня также были отдельные шаблоны писем.

Обычно файлов десятки. Вы можете сначала попробовать трюк. В основном веб-каталоге в файле .htaccess добавьте новую строковую директиву: AddDefaultCharset UTF-8.

Если это не поможет, вам нужно перекодировать все файлы.

Быстро изменить кодировку файлов под Linux

Я использую команду utf8, которую я написал в моем файле .bashrc в моем домашнем каталоге. У него есть функция bash:

# utf8 function utf8 () # преобразовать текстовый файл из cp1251 в utf8 {local TMPFILE = tmp. $$
если [-f $ 1]; затем iconv -f cp1251 -t utf8 "1 доллар" > $ TMPFILE mv $ TMPFILE "1 доллар" fi}

Таким образом, команда utf8 file.txt использует iconv для изменения кодировки с cp1251 на utf8.

Внимание! Перед использованием рекомендуется создать резервную копию файлов, так как эта команда перезаписывает оригинал. Если кодировка file.txt отличается от cp1251, например уже utf8, то символы кириллицы становятся неразборчивыми.

Имея эту команду, я выполняю:

для i в `ls * .php`; делать, если [-f $ i]; тогда utf8 $ i; fi; сделанный

Эта команда быстро изменяет кодировку всех файлов php в текущем каталоге.

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

Проверьте все файлы php, если где-то используется функция substr, например, в основном веб-каталоге вашего компьютера, по которому вы выполняете поиск:

grep -r substr *

Замените эту функцию на mb_substr () и аналогичным образом для всех функций, таких как strlen, strpos, split и других в библиотеке многобайтовых строк, поскольку каждая функция имеет префикс «mb_».

Это решит проблему странных символов ромба с вопросительными знаками, например: , и более серьезные проблемы с некорректным сравнением и усечением строк.

Это хорошая идея использовать

mb_internal_encoding (‘UTF-8’);

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

Регулярные выражения и сравнение с кириллицей.

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

если (preg_match [»

вместо

если (preg_match (‘/ [А-Яа-я] / u’, $ var))

Итерация кириллицей.

Если вы хотите обработать строку кириллицей по буквам. Сделать:

$ chrArray = preg_split (‘// u’, $ text, -1, PREG_SPLIT_NO_EMPTY); foreach ($ chrArray as $ char) {echo $ char; }

Вывод

В результате у нас есть рабочий сайт http://asl-bg.com полностью на UTF-8. Сайту более 12 лет.

Для нового сайта всегда используйте только кодировку UTF-8 для всех файлов и базы данных.

Читайте так же:
Not found

Нам доверяют

Интернет магазин