За запросом «перекодировать UTF-8 в Windows-1251» обычно стоит одна из двух задач. Первая — получить файл в Windows-1251 для программы, которая не понимает Юникод: старой учётной системы, банк-клиента, кассового ПО или сайта, который до сих пор работает в однобайтовой кириллице. Вторая — прочитать текст, который уже испорчен: вместо букв в нём стоят пары символов вроде Привет, РјРёСЂ. Конвертер на этой странице решает обе.
Если поле результата пустое, в файл попадёт исходный текст; если в нём что-то есть — результат. Переводы строк сохраняются в формате Windows, поэтому файл одинаково откроется и в Блокноте, и в старых программах.
Учтите ограничение самой кодировки: в Windows-1251 всего 256 символов. Кириллица, латиница, цифры, кавычки-ёлочки, длинное тире, «№» и знак евро в ней есть, а эмодзи, иероглифы, знаки вроде «≈» или «→» и буквы многих других алфавитов — нет. Такие символы в файле заменяются на «?», и конвертер предупредит об этом сообщением.
Чередование заглавных «Р» и «С» с другими знаками — верный признак того, что текст в UTF-8 открыли как Windows-1251. В UTF-8 каждая русская буква занимает два байта, первый из которых почти всегда равен D0 или D1. В Windows-1251 эти байты — буквы «Р» и «С», поэтому каждая буква превращается в пару символов, а текст становится вдвое длиннее.
Вставьте такой текст в верхнее поле и нажмите «Определить кодировку текста» — конвертер сам подберёт пару кодировок и покажет исправленный вариант. Вручную то же самое делается так: исходная кодировка — Windows-1251 (в ней текст сейчас отображается), нужная — UTF-8 (в ней он был записан). На этой странице эти значения выбраны заранее.
Если текст выглядит как Привет — с пробелами и знаками вроде «вЂ», — его испортили дважды. Исправьте его один раз, скопируйте результат в верхнее поле и запустите определение ещё раз.
| Программа | Что сделать |
|---|---|
| Блокнот Windows | «Файл» → «Сохранить как», в списке «Кодировка» выбрать ANSI. В русской версии Windows это и есть Windows-1251. |
| Notepad++ | «Кодировки» → «Преобразовать в ANSI». Пункт «Кодировки» → «Кириллица» → «Windows-1251» не перекодирует файл, а только меняет способ отображения уже записанных байтов. |
| Командная строка Linux и macOS | iconv -f UTF-8 -t WINDOWS-1251 input.txt > output.txt |
| Python | open('out.txt', 'w', encoding='cp1251').write(open('in.txt', encoding='utf-8').read()) |
Файл в Windows-1251 получится заметно меньше исходного: русская буква в нём занимает один байт вместо двух.