Появляются крокозябры при сохранении текстнового файла

1. Dunda 48 13.11.19 09:51 Сейчас в теме
Здравствуйте!
Сталкивался ли кто-нибудь с таким случаем.
Мне нужно выгрузить файл в стороннюю программу, куда принимается свой формат типа txt в кодировке dos.

До вчерашнего дня все работало. Ругается та программа так:
"Ошибка! В файле есть символы не из DOS-кодировки! Ошибка в строке № 1 в позиции 2."

Смотрю свой файл действительно там первые три символа крокозябры я╗┐

Открыла старые файлы. там тоже эти символы, но сторонняя программа видимо что-то переделала у себя и теперь ругается на них.
Нужно переделывать свою обработку.
Как избавиться от этих символов.
Написала обработку по просмотру символов, после записи 1ска эти символы тоже видит, а при записи нет.

вся обработка очень маленькая
Процедура ВыгрузитьУралСиб(Кнопка)
	сч=0;
	для каждого сс из сотр цикл
		если сс.Банк="V"  тогда
			сч=сч+1;
			Текст = Новый ТекстовыйДокумент;
     нач=ДополнитьСтрокуПробелами(Строка(1), 5);
	 кк= ДополнитьСтрокуПробелами("unoa", 1)+"    ";
	 сум=ДополнитьСтрокуПробелами(Строка(Формат(сс.сумма,"ЧЦ=14;ЧДЦ=2;ЧГ=0")),14); 
     Стр=строка(нач)+кк+строка(сум);

	      Текст.ДобавитьСтроку(Стр);
	
	 нач=ДополнитьСтрокуПробелами(СОкрЛП(сс.НомерРСчета),20); 
	 сум=ДополнитьСтрокуПробелами(Строка(Формат(сс.сумма,"ЧЦ=14;ЧДЦ=2;ЧГ=0")),12); 
     Стр=строка(нач)+строка(сум);
	 Текст.ДобавитьСтроку(Стр);

	 
	    Месяц=?(СТРДлина(Строка(Месяц(Дата)))=1,"0","")+Строка(Месяц(Дата));
		День=?(СТРДлина(Строка(День(Дата)))=1,"0","")+Строка(День(Дата));
		
		ИмяФ=Путь+"\UNOA"+строка(месяц)+строка(День)+".I"+?(СТРДлина(строка(сокрлп(сс.НомерПП)))=1,"0","")+строка(сокрлп(сс.НомерПП));
		Текст.;
				  
	конецесли;	
	конеццикла;
	
Предупреждение("Сформировано "+строка(сч)+" файлов");
	
	
	
	
КонецПроцедуры

Функция ДополнитьСтрокуПробелами(Строка, Длина)
    Пока СтрДлина(Строка) < Длина Цикл
        Пробел = Символ(32);
        Строка = Пробел+Строка;
     КонецЦикла;
	 строка=стрЗаменить(строка,",",".");
	 Возврат Строка;
 КонецФункции 
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. spacecraft 13.11.19 10:54 Сейчас в теме
(1) самого главного нет. Как записываете?
ЗТ = Новый ЗаписьТекста(ИмяФайла,КодировкаТекста.OEM); 
ЗТ.Записать(Данные); 
ЗТ.Закрыть();


По всей видимости не указываете кодировку. По умолчанию сохраняется в utf-8 с bom.
BOM существует только для utf-8. Для OEM он не имеет смысла.
6. Dunda 48 13.11.19 10:56 Сейчас в теме
(5)сначала когда объявляю файл я указываю oem/
в конце делаю
записать(Текст);
7. spacecraft 13.11.19 10:57 Сейчас в теме
9. Dunda 48 13.11.19 11:01 Сейчас в теме
(7)еще раз перечитала код выше и правда не нашла нигде OEM.

Пока на серваке инtn отвалился, как появится попробую назначить OEM
2. Lenten 25 13.11.19 10:16 Сейчас в теме
рискну предположить что дело в кодировке


символы я╗┐ это BOM - (англ. Byte Order Mark (BOM))
Маркер последовательности байтов или метка порядка байтов (англ. Byte Order Mark (BOM)) — Юникод-символ, используемый для индикации порядка байтов текстового файла. Его кодовый символ U+FEFF. По спецификации, его использование не является обязательным, однако, если маркер последовательности байтов используется, то он должен быть установлен в начале текстового файла. Помимо своего конкретного использования в качестве указателя порядка байтов, символ может также указать, какой кодировкой Unicode закодирован текст.
3. Dunda 48 13.11.19 10:34 Сейчас в теме
(2) я тоже на нее грешу, но как мне выбрать другую, если просят dos, в 1с если я правильно понимаю это oem
4. Lenten 25 13.11.19 10:47 Сейчас в теме
(3) вы когда файл записываете, кодировку указываете?
8. Lenten 25 13.11.19 10:57 Сейчас в теме
попробуйте "windows-1251". А вообще лучше у контрагента узнать какая ему нужна


Записать(<ИмяФайла>, "windows-1251", <РазделительСтрок>)
10. Dunda 48 13.11.19 11:01 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот