Конвертер кодировок текста

Перекодировать Windows-1251 в UTF-8 онлайн

Windows-1251 долгие годы была основной кодировкой русского текста в Windows: в ней написаны старые документы, выгрузки из учётных программ, страницы сайтов начала 2000-х, субтитры и логи. Современные сайты, базы данных, системы контроля версий и Linux работают в UTF-8, поэтому такие файлы рано или поздно приходится перекодировать.

Как перевести файл в UTF-8

  1. Нажмите «Загрузить файл» и выберите файл в Windows-1251. Конвертер прочитает его байты и покажет текст в верхнем поле — он должен читаться нормально.
  2. Выберите кодировку файла UTF-8 (на этой странице она уже выбрана) и нажмите «Скачать файл в этой кодировке».

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

UTF-8 с BOM или без

BOM — это три служебных байта EF BB BF в начале файла, по которым программы узнают, что файл записан в UTF-8. Нужен ли он, зависит от того, куда пойдёт файл:

  • Без BOM — для сайтов, скриптов PHP и Python, конфигурационных файлов и всего, что обрабатывается в Linux. В PHP-файле BOM выводится в браузер раньше заголовков и вызывает ошибку «headers already sent», а в начале скрипта Linux может превратиться в невидимый мусор, который ломает первую строку.
  • С BOM — для CSV-файлов, которые будут открывать в Excel: без метки Excel прочитает UTF-8 как Windows-1251, и вместо букв появятся пары символов «Р» и «С». Для этого в списке есть пункт «UTF-8 с BOM (для Excel)».

Как исправить текст «Ïðèâåò, ìèð»

Латинские буквы с точками и чёрточками вместо русских — это текст в Windows-1251, прочитанный в западноевропейской кодировке Windows-1252 (ISO-8859-1). Так бывает со старыми письмами, страницами без указания кодировки и субтитрами на телевизорах. Вставьте текст в поле и нажмите «Определить кодировку текста» или выберите вручную: исходная — Windows-1252, нужная — Windows-1251. На этой странице эти значения уже выбраны.

Как перекодировать без сайта

ПрограммаЧто сделать
Блокнот WindowsОткрыть файл, затем «Файл» → «Сохранить как», в списке «Кодировка» выбрать UTF-8.
Notepad++Если текст читается нормально — «Кодировки» → «Преобразовать в UTF-8». Если видны кракозябры — сначала «Кодировки» → «Кириллица» → «Windows-1251», затем преобразовать.
Командная строка Linux и macOSiconv -f CP1251 -t UTF-8 input.txt > output.txt
Pythonopen('out.txt', 'w', encoding='utf-8').write(open('in.txt', encoding='cp1251').read())

Частые вопросы

Почему после перевода в UTF-8 файл стал больше?
В Windows-1251 каждая буква занимает один байт, а в UTF-8 русские буквы занимают два. Латиница, цифры и знаки препинания остаются однобайтовыми, поэтому чисто русский текст вырастает почти вдвое, а смешанный — меньше.
Сайт работает в Windows-1251. Что нужно поменять при переходе на UTF-8?
Перекодировать файлы шаблонов и скриптов, указать кодировку в заголовке Content-Type или теге <meta charset="utf-8">, перевести таблицы базы данных и кодировку соединения с ней (для MySQL — utf8mb4). Если поменять только часть из этого, на страницах появятся кракозябры.
Можно ли вернуть текст, в котором вместо букв ромбы с вопросами?
Из скопированного текста — нет: на месте каждой буквы остался один и тот же символ-заменитель, и исходные байты утрачены. Нужен исходный файл: загрузите его в конвертер или откройте в редакторе с явным выбором кодировки Windows-1251. Подробнее — в инструкции про ромбы с вопросами.