Неверная кодировка файла загрузите файл с кодировкой windows 1251

Проблема с кодировкой при сохранении строки в файл.

Andrey 30.09.2021 15:09

Приветствую уважаемое общество! Столкнулся с проблемой следующего характера: формирую xml-файл УПД для передачи через ЭДО, сохраняю его на диск командой

^str_file_complete_tained.save[/${upd_file_name}.xml;$.charset[windows-1251]]

скармливаю этот документ для проверки сюда https://www.diadoc.ru/docs/forms/validation-xml
получаю сообщение: «Неверная кодировка файла Загрузите файл с кодировкой windows-1251» подскажите пожалуйста в чем может быть проблема


  • Проблема с кодировкой при сохранении строки в файл., Andrey 30.09.2021 15:09
    • Спасибо. Вопрос снят, решил другим путем. (-), Andrey 30.09.2021 16:59
      • И никому не скажете?, G_Z [M] 30.09.2021 22:52 / 01.10.2021 14:44
        • Конечно скажу., Andrey 01.10.2021 00:11

Кодировка текста – это схема нумерации символов, в которой каждому символу, цифре или знаку присвоено соответствующее число. Кодировку используют для сохранения и обработки текста на компьютере. Каждый раз при сохранении текста в файл он сохраняется с использованием определенной схемы кодирования, и при открытии этого файла необходимо использовать такую же схему, иначе восстановить исходный текст не получится. Самыми популярными кодировками для кириллицы сейчас являются UTF-8, Windows-1251 (CP1251, ANSI).

Для того чтобы программа смогла правильно открыть текстовый файл, иногда приходится вручную менять кодировку, перекодируя текст из одной схемы в другую. Например, не редко возникают проблемы с открытием файлов CSV, XML, SQL, TXT, PHP.

В этой небольшой статье мы расскажем о том, как изменить кодировку текстового файла на UTF-8, Windows-1251 или любую другую.

Блокнот Windows

Если вы используете операционную систему Windows 10 или Windows 11, то вы можете изменить кодировку текста с помощью стандартной программы Блокнот. Для этого нужно открыть текстовый файл с помощью Блокнота и воспользоваться меню «Файл – Сохранить как».

меню Файл – Сохранить как

В открывшемся окне нужно указать новое название для файла, выбрать подходящую кодировку и нажать на кнопку «Сохранить».

изменить кодировку в Блокноте

К сожалению, для подобных задач программа Блокнот часто не подходит. С ее помощью нельзя открывать документы большого размера, и она не поддерживает многие кодировки. Например, с помощью Блокнота нельзя открыть текстовые файлы в DOS 866.

Notepad++

Notepad++ (скачать) является одним из наиболее продвинутых текстовых редакторов. Он обладает подсветкой синтаксиса языков программирования, позволяет выполнять поиск и замену по регулярным выражениям, отслеживать изменения в файлах, записывать и воспроизводить макросы, считать хеш-сумы и многое другое. Одной из основных функций Notepad++ является поддержка большого количества кодировок текста и возможность изменения кодировки текстового файла в UTF-8 или Windows 1251.

Для того чтобы изменить кодировку текста с помощью Notepad++ файл нужно открыть в данной программе. Если программа не смогла правильно определить схему кодирования текста, то это можно сделать вручную. Для этого нужно открыть меню «Кодировки – Кириллица» и выбрать нужный вариант.

выбрать кодировку в Notepad++

После открытия текста можно изменить его кодировку. Для этого нужно открыть меню «Кодировки» и выбрать один из вариантов преобразования. Notepad++ позволяет изменить текущую кодировку текста на ANSI (Windows-1251), UTF-8, UTF-8 BOM, UTF-8 BE BOM, UTF-8 LE BOM.

изменить кодировку в Notepad++

После преобразования файл нужно сохранить с помощью меню «Файл – Сохранить» или комбинации клавиш Ctrl-S.

Akelpad

Akelpad (скачать) – достаточно старая программа для работы с текстовыми файлами, которая все еще актуальна и может быть полезной. Фактически Akelpad является более продвинутой версией стандартной программы Блокнот из Windows. С его помощью можно открывать текстовые файлы большого размера, которые не открываются в Блокноте, выполнять поиск и замену с использованием регулярных выражений и менять кодировку текста.

Для того чтобы изменить кодировку текста с помощью Akelpad файл нужно открыть в данной программе. Если после открытия файла текст не читается, то нужно воспользоваться меню «Файл – Открыть».

открыть файл в Akelpad

В открывшемся окне нужно выделить текстовый файл, снять отметку «Автовыбор» и выбрать подходящую кодировку из списка. При этом в нижней части окна можно видеть, как будет отображаться текст.

выбрать кодировку в Akelpad

Для того чтобы изменить текущую кодировку текста нужно воспользоваться меню «Файл – Сохранить как» и сохранить документ с указанием новой схемы кодирования.

изменить кодировку в Akelpad

В отличие от Notepad++, текстовый редактор Akelpad позволяет сохранить файл в практически любой кодировке. В частности, доступны Windows 1251, DOS 886, UTF-8 и многие другие.

Посмотрите также:

  • Чем открыть PDF файл в Windows 7 или Windows 10
  • Как перевернуть страницу в Word
  • Как копировать текст с помощью клавиатуры
  • Как сделать рамку в Word
  • Как сделать буклет в Word

Автор
Александр Степушин

Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.

Остались вопросы?

Задайте вопрос в комментариях под статьей или на странице
«Задать вопрос»
и вы обязательно получите ответ.

Сообщение от ТабуретY

нужно попробовать отправить строку полученную отсюда
JavascriptВыделить код
1
reader.readAsText(file, ‘CP1251’);

Попробовал

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var s; 
var fileInput = document.createElement('input');
        fileInput.type = 'file';
 
        fileInput.oninput = function () {
            var file = fileInput.files[0];
 
            var reader = new FileReader();
            reader.onload = function (e) {
                s = (e.target.result);
            };
            reader.readAsText(file, 'CP1251');
        }
        fileInput.click();

потом так

JavaScript
1
2
3
4
var a = document.createElement("a");
a.setAttribute("href", "data:text/plain;charset=CP1251," + (s));
a.setAttribute("download", "Test.txt");
a.click();

Открываю файл в VS Code — его кодировка UTF-8, все символы считываются нормально

Так что скорее всего строка, полученная из reader.readAsText(…) уже преобразуется в юникод

Добавлено через 2 минуты
windows1251.encode естественно тоже не помог)

Добавлено через 2 часа 15 минут
ТабуретY,
Вот рабочий пример для слова «привет»

JavaScript
1
2
3
4
var a = document.createElement("a");
a.setAttribute("href", "data:text/plain;charset=cp1251,%EF%F0%E8%E2%E5%F2");
a.setAttribute("download", "Test.txt");
a.click();

Плюс такая деталь, что например

JavaScript
1
decodeURIComponent('%EF%F0%E8%E2%E5%F2')

Не работает
Но при этом файл со словом «привет» в нужной мне кодировке сохраняется

Добавлено через 6 минут
И вот функция декодирования

JavaScript
1
2
3
4
5
6
function decodeCP1251(s, p) {
var cp1251 = 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬*®Ї°±Ііґµ¶·\
ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';    
p = parseInt(p, 16);
    return p < 128 ? String.fromCharCode(p) : cp1251[p - 128];
}

Только cp1251 = ‘ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬*®Ї°±Ііґµ¶·\
ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ абвгдежзийклмнопрстуфхцчшщъыьэюя’;
(в коде немного неправильно отображается)

Осталось дело за малым, сделать обратную функцию)

Добавлено через 9 минут
точнее, функция такая, та — только один символ декодирует

JavaScript
1
2
3
4
5
6
7
8
9
function decodeCP1251(string){
    function decodeChar(s, p) {
        var cp1251 = 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬*®Ї°±Ііґµ¶·\ ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';    
        p = parseInt(p, 16);
        return p < 128 ? String.fromCharCode(p) : cp1251[p - 128];
    }
    var str = string;
    return str.replace(/%(..)/g,decodeChar);
}

Только cp1251 = ‘ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬*®Ї°±Ііґµ¶·\
ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ абвгдежзийклмнопрстуфхцчшщъыьэюя’;
(в коде немного неправильно отображается)

Осталось дело за малым, сделать обратную функцию)

Рассмотрим в данной инструкции, что делать, если Вы открыли или загружаете  файл, а там «каракули»?

Файл с неверной кодировкой выглядит примерно так (рис.1):

Иногда вместо нормально текста в текстовом файле может быть вот такое

Рисунок 1.

Причина этому неверная кодировка, поэтому кодировку файла надо изменить. Для этого нам понадобится перейти на сайт Notepad++ и скачать последнюю актуальную версию программы. На текущий момент актуальная версия 8.1.4, скачиваем программу и устанавливаем (рис.2).

Нам понадобится скачать и установить программу Notepad++ вот отсюда

Рисунок 2.

Далее кликом правой клавиши мыши откройте Ваш файл через Notepad++ и через меню «Кодировки»- «Преобразовать в UTF-8» или «Encoding» -«Convert to UTF-8» преобразуйте кодировку файла, далее сохраните файл (рис. 3.).

Далее открываем нужный файл через программу Notepad++ и через меню "Кодировки" > "Преобразовать в UTF-8" исправляем кодировку файла» src=»https://www.advantshop.net/files/100/notepad-kar/Notepad-100-30.jpg»></p>
<div class= Картинка с сайта: www.advantshop.net

Рисунок 3.

Готово. Мы рассмотрели, что делать, если Ваш файл имеет неверную кодировку.

Тэги: Что делать если в текстовом файле не верная кодировка (каракули), неверная кодировка, кодировка, каракули, иероглифы, csv, файл, эксель, excel, ошибка

Добрый день.
1) Открываю файл (notepad++) кодировка win-1251, записываю туда текст, сохраняю закрываю файл.
2) Открываю файл — кодировка Macintosh. (А нужна win-1251)

Насколько я понимаю, в тексте присутствуют символы, которые приводят к такому поведению.
Как их вычислить?

Пример текста:

{
    "in": ["param1"],
    "in_out": ["param2"],
    "out": ["param3"],
    "inDescr": "--   Установить $x$ в $y$;",
    "outDescr": "--   Значение $x$ установлено в $y$;",
    "outDescr2": "--   Значение $x$ не изменилось;",
    "outDescr3": "--   Значение $x$ установлено в $y$ с погрешностью $z$;",
    "inArr": "--   Установить $x$ следующим образом: $y$;",
    "outArr": "--   Значения $x$ установлены следующим образом: $y$;",
    "outArr2": "--   Значения $x$ не изменились;",
    "inStub": "--   Функция $x$ возвращает значение $y$;",
    "outStub": "--   Функция $x$ не вызывалась;",
    "outStub2": "--   Функция $x$ вызывалась $y$ раз с параметрами ($z$"
}

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как изменить размер системного шрифта в windows 10
  • Как сделать сменяющиеся обои на windows 10
  • Как сделать смайлики на компьютере windows 10
  • Два рабочих стола на одном экране windows 10
  • Возникла проблема ваш pin код недоступен windows 10 на ноутбуке