Кодировка ОЕМ в методе "Записать" при формировании bat-файла
|
|
Max | Дата: Понедельник, 24.09.2018, 13:14 | Сообщение # 1 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Винда Сервер 2016. Инструмент "Регистрация COM компонент". Нажимаю кнопку "Запустить от администратора" и вижу, что в сформированном самоудалящемся бат-файле вместо кириллицы (имя пользователя и путь к обработке ИР) знаки вопроса. Из-за этого сеанс не запускается. Исправил в методе "СоздатьСамоудаляющийсяКомандныйФайлЛкс" (ирОбщий) одну строку и все заработало. Было:Код ТекстовыйДокумент.Записать(ПолноеИмяФайла, КодировкаТекста.OEM);
Стало:Код ТекстовыйДокумент.Записать(ПолноеИмяФайла); // по умолчанию кодировка УТФ-8
В настройках ОС язык локали для неюникодовских программ установлен в значение "Русский". Патч реестра, подменяющий какие-то там странички cp1251.nls, который иногда помогает избавиться от знаков вопросов вместо кириллицы, в ОС не делал.
Сообщение отредактировал Max - Понедельник, 24.09.2018, 13:14 |
|
| |
tormozit | Дата: Понедельник, 24.09.2018, 23:33 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
| А если так? ТекстовыйДокумент.Записать(ПолноеИмяФайла, КодировкаТекста.ANSI);
|
|
| |
Max | Дата: Вторник, 25.09.2018, 07:58 | Сообщение # 3 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Записанный с кодировкой АНСИ и открытый после этого в "Блокноте" бат-файл корректен (кириллица отображается как ожидается), но 1С видит вместо этого "крякозябры": http://pics.rsh.ru/img/Untitled_magpmima.png
И это не первый случай, когда 1С в Винде не понимает кодировку, отличную от УТФ-8: был еще один похожий с обработкой универсального обмена ХМЛ (которая использует запись файлов обмена в кодировке АНСИ).
|
|
| |
tormozit | Дата: Воскресенье, 30.09.2018, 22:37 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
| Исправлено в 4.67
|
|
| |
Max | Дата: Понедельник, 01.10.2018, 10:04 | Сообщение # 5 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Исправлено, да не совсем, как оказалось. Выдернул созданный бат-файлик, запускаю его отдельно в командной строке и вот что получается: http://pics.rsh.ru/img/Untitled_usarzto5.png
Команда "cmd" даже не начинает выполняться. Подчеркнутое красным "я╗┐" - это BOM (byte order mark) и, судя по всему, текстовый UTF8-файл надо сохранять без него. Проблема в том, что объектами "ТекстовыйДокумент" или "ЗаписьТекста" этого добиться, похоже, можно только в паре с объектом "Поток" (8.3.9.1818+). Но ведь у тебя используется метод "Run" внешней компоненты - может, в ней этот BOM удалять?
Сообщение отредактировал Max - Понедельник, 01.10.2018, 10:06 |
|
| |
gda | Дата: Среда, 03.10.2018, 15:43 | Сообщение # 6 |
Лейтенант
Группа: Проверенные
Сообщений: 60
Репутация: 66
Статус: Оффлайн
| В комментарии к статье https://infostart.ru/public/137454/ предлагается использовать кодировку CESU-8 вместо UTF-8.
|
|
| |
smerch | Дата: Понедельник, 08.10.2018, 15:34 | Сообщение # 7 |
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 14
Статус: Оффлайн
| Подтверждаю, кодировка CESU-8 работает.
Есть только один нюанс: для того, чтобы параметры передавались верно необходимо установить кодировку 65001 перед запуском команды.
Т.е. в обработке ирПлатформа.epf в процедуре ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения добавить вначале строки запуска Код СтрокаЗапуска = "chcp 65001" + Символы.ПС + "cmd.exe /c """ + СтрокаЗапуска + """";
Сообщение отредактировал smerch - Понедельник, 08.10.2018, 17:11 |
|
| |