Кодировка сайта utf 8 или windows 1251: html — Отличие кодировки windows-1251 от utf-8

Что выбрать DataLife Engine UTF-8 или windows-1251

Так как многие задают этот вопрос при выборе движка для своего сайта, хотелось бы разъяснить об особенностях UTF кодировки и для чего она нужна, а также стоит или нет переходит на эту кодировку, если ваш сайт уже стоит с использованием кодировки windows-1251.

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

Кодировка windows-1251 поддерживает базовую латиницу (читайте английский язык, ну и американский соответственно), русский, украинский, белорусский, сербский. Иными словами, 1251 подходит для большинства обычных пользователей. Если вы планируете создавать международный проект, с поддержкой расширенной латиницы: немецкого, польского, французского, а также различных других языков: арабского, иврита и более сложных письмён, вам нужен именно UTF-версия.

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

Более того для русскоязычных сайтов данная кодировка обладает рядом недостатков, а именно:

1. Размер базы данных русскоязычного сайта будет примерно на 70% больше по сравнению с использованием национальной кодировки windows-1251, что соответственно скажется на производительности сайтов с большими базами данных.

2. Шаблоны и языковые файлы для кодировки имеют специфический формат файлов (UTF формат без BOM байтов), соответственно для редактирования файлов шаблона вам понадобятся специализированные редакторы, поддерживающие этот формат. Из бесплатных это например notepad++. Сохранение этих файлов в неверном формате приведет к не читаемости вашего сайта.

3. Сторонний модуль или шаблон придется конвертировать для кодировки UTF,а большая часть из низ (90%) сделаны для кодировки windows-1251. При этом шаблоны на dle можно перевести,а вот для модулей сложнее понадобиться изменять код

Поэтому мы не рекомендуем использовать кодировку UTF-8 на сайте, если вы не планируете использование на сайте других языков, отличных от русского, английского, украинского языков.

Обновление сайта с кодировки windows-1251 на кодировку UTF-8:

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

1. Сделать бекап базы данных существующего сайта в кодировке win-1251 DLE
2. Произвести новую установку скрипта используя дистрибутив скрипта для UTF версии.
3. Произвести повторные настройки скрипта для вашего сайта.
4. Сконвертировать файлы вашего шаблона в формат UTF-8 (для пакетного конвертирования мы рекомендуем использовать утилиту Sisulizer’s Kaboom), при конвертировании снимите галочку «Записывать BOM байты»
5. Скопировать файл бекапа базы данных от вашего сайта в папку /backup/, который вы делали в первом пункте.
6. Зайти в админпанель скрипта и сделать восстановление базы данных а админпанели, скрипт автоматически распознает несоответствие кодировок и при восстановлении сконвертирует базу данных в формат UTF.

Внимание: Действия по переносу сайта с кодировки windows-1251 на кодировку UTF-8 являются необратимыми и любая ошибка может привести к потери данных вашего сайта, поэтому мы настоятельно рекомендуем производить данные действия на локальном компьютере, а уже потом переносить все на рабочий сайт.

Наш ресурс dle9.com «все для DataLife Engine» предлагает полезную статью что такое dle, теперь надеюсь вы знаете что выбрать движок DataLife Engine UTF-8 — win-1251

Как быстро изменить кодировку сайта, например, из windows-1251 в UTF-8 — Code Depth

Имеется сайт на PHP, существующий уже много-много лет. Сайт создавался и развивался в кодировке windows-1251, но дальше так жить невозможно, надо весь PHP-код преобразовать в UTF-8, то же самое сделать с html-, css-, js- и прочими файлами, сконвертировать базу данных MySQL и ещё кое-что подправить.

Как быстро выполнить переход сайта на кодировку UTF-8?

Нам помогут знания из статьи про recode и enconv, добавим к ним ещё кое-что.

Все действия можно свести в один bash-скрипт, отдельные части которого рассмотрим в статье.

1. Создать копию всех файлов сайта. Например, сайт находится в /var/www/site. Для работы сайта ещё используются /var/www/dir1, /var/www/dir2, /var/www/dir3, причём dir1 и dir2 надо перекодировать вместе с site, а dir3 не надо трогать. Скопируем всё в /var/www-u8. Для удобства будем использовать переменные, в которых сохраним часто используемые строки.

dir_source=’/var/www’

dir_u8=’/var/www-u8′

cp -R ${dir_source}/* ${dir_u8}

Массив, содержащий имена подкаталогов, в которых надо обработать файлы:

subdirs=(site dir1 dir2)

Во всех подкаталогах надо перекодировать из windows-1251 в UTF-8 все файлы с расширениями: php, txt, js, css, htm. Нам поможет enconv. Затем найти подстроки «windows-1251» или «cp1251» и заменить на «UTF-8». Наконец, найти в php-файлах короткий открывающий тег «<?» и заменить его на полный «<?php». Регулярное выражение для поиска короткого тега ищет строку ‘<?’, после которой следует пробел, конец строки или символ ‘=’ (для файлов, в которых php-код используется вперемешку с html для вставки значений переменных: ‘<?=$var;?>’). Все замены поможет выполнить могучий sed, а с подбором файлов для обработки отлично справится find. Поскольку обработку надо выполнить в нескольких подкаталогах (их имена хранятся в массиве $subdirs), то перебираем элементы массива в цикле (подробнее про использование массивов в bash) и из них составляем путь для поиска командой find.

for item in ${subdirs[*]}
do
  sPath=${dir_u8}/${item}
  find ${sPath} -iregex '.*\.\(txt\|php\|css\|js\|html?\)' -exec enconv -L russian -x utf8/LF '{}' \;
  find ${sPath} -iregex '.*\.\(txt\|php\|css\|js\|html?\)' -exec sed -i -r 's/windows-1251|cp1251/UTF-8/ig' '{}' \;
  find ${sPath} -iname '*\.php' -exec sed -i -r 's/(<\?)(\s|$|=)/<?php\2/ig' '{}' \;
done

С перекодировкой базы данных MySQL вообще всё просто.

Надо сделать дамп данных, в области описания таблиц заменить строки, определяющие кодировку, загрузить дамп в новую в базу. Примерно так:

HOST_1='localhost'
USER_1='user1'
PASSWORD_1='password1'
DATABASE_1='database1'
HOST_2='localhost'
USER_2='user2'
PASSWORD_2='password2'
DATABASE_2='database2'
DUMPFILE_1="db-${DATABASE_1}.sql"
DUMPFILE_2="db-${DATABASE_2}.sql"
# dump from the original DB
mysqldump -u ${USER_1} -h ${HOST_1} -p${PASSWORD_1} --opt ${DATABASE_1} > ${DUMPFILE_1}
# Replace charset settings from cp1251 to utf8
sed -r 's/CHARSET=cp1251/CHARSET=utf8/ig' ${DUMPFILE_1} > ${DUMPFILE_2}
# Load data from the dump
mysql -u ${USER_2} -h ${HOST_2} -p${PASSWORD_2} ${DATABASE_2} < ${DUMPFILE_2}

В скрипте все переменные, имена которых оканчиваются на «1», относятся к исходной базе данных, работающей в кодировке cp1251. Все переменные, имена которых оканчиваются на «2», относятся к новой базе данных, которая будет использоваться в перекодированном в utf-8 сайте.

Осталось установить для файлов в ${dir_u8} нужные права доступа, при необходимости настроить контекст безопасности SELinux и, наконец, настроить вебсервер для визуальной проверки перекодированного сайта.

Если свести воедино все фрагменты bash-скрипта, написанные на этой странице, то, фактически, весь процесс изменения кодировки сайта на utf-8 окажется простым и быстрым.

Понравилось это:

Нравится Загрузка…

Объявление внутренней кодировки «windows-1251» не соответствует фактической кодировке документа («utf-8»).

Rocket Validator интегрирует средство проверки HTML W3C Validator. в автоматизированный поисковый робот.

Бесплатная пробная версия Пробная версия Pro

  • кодирование
  • утф-8
  • окна-1251

Было объявлено, что документ использует кодировка windows-1251 , но фактическое содержимое выглядит как utf-8 . Вы должны обновить кодировку, как в этом примере:

  

Связанные с валидатором проблемы W3C

Неверное значение «text/html; charset=windows-1251» для атрибута «content» элемента «meta»: за «charset=» должно следовать «utf-8».

  • кодировка
  • содержание
  • мета
  • утф-8
  • окна-1251

В документе был найден тег , в котором указано, что кодировка windows-1251

, но на самом деле это utf-8 . Вы должны обновить тег, чтобы отразить фактическую кодировку документа, например:

  

Запрещенная кодовая точка X

  • кодирование
  • утф-8
  • кодовая точка

В документе обнаружен символ, недопустимый в используемой кодировке.

Документ не должен включать как элемент «мета» с атрибутом «http-equiv», значением которого является «тип контента», так и элемент «мета» с атрибутом «charset».

  • кодировка
  • мета
  • http-эквивалент
  • Тип содержимого
  • утф-8

Чтобы определить кодировку HTML-документа, обе эти опции допустимы, но только одна из них должна присутствовать в документе :

 
<мета-кодировка="UTF-8">

 

Неверное значение (.*) для атрибута «href» элемента «a»: недопустимый символ в сегменте пути

  • кодирование
  • плохое значение
  • href
  • а

Атрибут href элемента содержит недопустимый символ, который должен быть правильно закодирован как символ с процентным кодированием URI.

6 250 проверок HTML в неделю. Полностью автоматизирован.

Экономьте время, используя нашу автоматическую веб-проверку. Позвольте нашему сканеру проверить ваши веб-страницы на W3C Validator.

Rocket Validator Basic
6 250 проверок HTML, 18 долл. США в неделю

Неверное значение атрибута «src» элемента «img»: недопустимый символ в данных схемы: «<» не допускается.

Атрибут src в элементе содержит недопустимый символ, который должен быть правильно закодирован как символ с процентным кодированием URI.

Неверное значение «text/html; charset=windows-1252» для атрибута «content» элемента «meta»: за «charset=» должно следовать «utf-8».

В документе был найден тег , в котором указано, что кодировка windows-1252 , но на самом деле это utf-8 . Вы должны обновить тег, чтобы отразить фактическую кодировку документа, например:

  

Все еще проверяете свои большие сайты постранично?

Экономьте время, используя нашу автоматическую веб-проверку. Позвольте нашему сканеру проверить ваши веб-страницы на W3C Validator.

Rocket Validator Micro
5000 проверок HTML в месяц, 12 долларов США в месяц

Неверное значение «X» для атрибута «accept» элемента «input»: ожидался символ токена или «/», но вместо этого было «,».

Атрибут accept может быть указан, чтобы предоставить браузерам подсказку о том, какие типы файлов будут приняты в элементе . Ожидается список разрешенных типов файлов, разделенных запятыми. Обратитесь к списку типов носителей, чтобы проверить принятые токены. В этом примере первая строка недействительна, а вторая действительна:

 
 

Неверное значение X для атрибута «href» элемента «a»: недопустимый символ во фрагменте: пробел не допускается.

Пробелы не допускаются в href атрибуты. Вместо этого их следует преобразовать в %20 . В этом примере первая строка недействительна, а вторая допустима:

 invalid
действительно 

Недопустимое значение «X» для атрибута «href» элемента «a»: недопустимый символ в запросе: пробел не допускается.

  • а
  • кодирование
  • href

Атрибут href в теге содержит пробел, что недопустимо. Рассмотрите возможность замены символов пробела на «%20».

Неверное значение «X» для атрибута «src» элемента «img»: недопустимый символ в сегменте пути: пробел не допускается.

Символы пробела не допускаются в атрибутах src . Вместо этого их следует преобразовать в %20 . В этом примере первая строка недействительна, а вторая допустима:

 description
description 

Все еще проверяете свои большие сайты постранично?

Экономьте время, используя нашу автоматическую веб-проверку. Позвольте нашему сканеру проверить ваши веб-страницы на W3C Validator.

Rocket Validator Micro
1250 проверок HTML в неделю, 6 долларов США в неделю

Кодировка

символов. Как преобразовать текстовый файл в UTF-8 из Windows-1251?

спросил

Изменено 1 год, 6 месяцев назад

Просмотрено 10 тысяч раз

Windows 10, Emacs 25.

Когда я хочу преобразовать файл из Windows-1251 в UTF-8, я использую Notepad++.

Перед преобразованием:

преобразованием:

после преобразования:

Мой вопрос: возможно ли это преобразование в Emacs?

  • character-encoding

Следует использовать команду set-buffer-file-coding-system ( C-x RET f ), установить кодировку, а затем сохранить файл.

Обратите внимание, что вы можете сначала revert-buffer-with-coding-system ( C-x RET r ) перед выполнением вышеуказанного шага, если файл изначально открыт с неправильной кодировкой.

1

Самый простой способ сделать это:

  1. Тип C-x RET c
  2. Выберите нужную систему кодирования (в данном случае возможно utf-8-dos )
  3. Передайте C-x C-w в качестве команды и передайте имя файла для записи

3

Это должно помочь:

  1. Посетите файл с C-x C-f .
  2. Вернуть открытый буфер к исходной кодировке файла ( cp-1251 in в этом случае) с M-x + revert-buffer-wth-coding-system .
  3. Используйте M-x + set-buffer-file-coding-system , чтобы установить кодировку utf-8.
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *