Windows-1251 долгие годы была основной кодировкой русского текста в Windows: в ней написаны старые документы, выгрузки из учётных программ, страницы сайтов начала 2000-х, субтитры и логи. Современные сайты, базы данных, системы контроля версий и Linux работают в UTF-8, поэтому такие файлы рано или поздно приходится перекодировать.
Загружать файл надёжнее, чем копировать из него текст. Если файл в Windows-1251 уже открылся в редакторе как UTF-8 и вместо букв видны ромбы с вопросами, копировать бесполезно: исходные байты на этом этапе уже потеряны. Загруженный файл конвертер читает напрямую, и такой проблемы не возникает.
BOM — это три служебных байта EF BB BF в начале файла, по которым программы узнают, что файл записан в UTF-8. Нужен ли он, зависит от того, куда пойдёт файл:
Латинские буквы с точками и чёрточками вместо русских — это текст в Windows-1251, прочитанный в западноевропейской кодировке Windows-1252 (ISO-8859-1). Так бывает со старыми письмами, страницами без указания кодировки и субтитрами на телевизорах. Вставьте текст в поле и нажмите «Определить кодировку текста» или выберите вручную: исходная — Windows-1252, нужная — Windows-1251. На этой странице эти значения уже выбраны.
| Программа | Что сделать |
|---|---|
| Блокнот Windows | Открыть файл, затем «Файл» → «Сохранить как», в списке «Кодировка» выбрать UTF-8. |
| Notepad++ | Если текст читается нормально — «Кодировки» → «Преобразовать в UTF-8». Если видны кракозябры — сначала «Кодировки» → «Кириллица» → «Windows-1251», затем преобразовать. |
| Командная строка Linux и macOS | iconv -f CP1251 -t UTF-8 input.txt > output.txt |
| Python | open('out.txt', 'w', encoding='utf-8').write(open('in.txt', encoding='cp1251').read()) |
<meta charset="utf-8">, перевести таблицы базы данных и кодировку соединения с ней (для MySQL — utf8mb4). Если поменять только часть из этого, на страницах появятся кракозябры.